Ðề tài: CCS C for PIC16F877A
View Single Post
Old 05-04-2006, 11:08 AM   #18
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Ngắt ngoài trên RB4-RB7

Còn đây là ứng dụng ngắt ngoài trên RB4 đến RB7 để thay đổi kiểu cũng như tốc độ chớp nháy mấy con led chỉ để....ngắm cho vui mắt !

Ấn sw1, led1 nhấp nháy với delay 250ms
Ấn sw2, led1,2 nhấp nháy với delay 200ms
Ấn sw3, led1,2,3 nhấp nháy với delay 150ms
Ấn sw4, led1,2,3,4 nhấp nháy với delay 100ms
Code:
//*****************************************************************************
// Author  : nhh
// Date    : 03/04/06
// Hardware: PIC16F877A
//*****************************************************************************
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#byte portb=0x06
#byte intcon=0x000B
#bit RB4=portb.4
#bit RB5=portb.5
#bit RB6=portb.6
#bit RB7=portb.7
#bit RBIF=intcon.0 //dinh nghia co ngat RB
#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB
int led=0,speed;
// Chuong trinh ngat
#int_RB
void ngat_RB()
{
if((RBIF)&&(RBIE)) 
   { 
      //Kiem tra sw1
      {
      if(RB4==0)
         {
         led=0b00000001; //led1 sang
         speed=250;
         } 
      }
      //Kiem tra sw2      
      {
      if(RB5==0)
         {
         led=0b00000011; //led1,2 sang
         speed=200;
         } 
      }
      //Kiem tra sw3
      {
      if(RB6==0)
         {
         led=0b00000111; //led1,2,3 sang
         speed=150;
         } 
      }
      //Kiem tra sw4
      {
      if(RB7==0)
         {
         led=0b00001111; //led1,2,3,4 sang
         speed=100;
         } 
      }
   RBIF=0; //Xoa co ngat RB      
   }
}
// Chuong trinh chinh
main()
{
set_tris_b(0b11110000);
portb=0b00001111;
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
   {
   portb=led;
   delay_ms(speed);
   portb=0;
   delay_ms(speed);  
   }
}
Không như trong MPLAB, đã định nghĩa sẵng các thanh ghi và bit tương ứng, còn CCS C chỉ định nghĩa chân PIC, những thanh ghi, những bit mà CCS C cho là cần thiết, ta xem trong file PIC16F887A.h, thanh ghi, bit nào chưa định nghĩa mà muốn sử dụng thì phải định nghĩa nó.
Ta có thể viết riêng 1 file.h loại này sao cho mình dễ nhớ nhất, đến khi muốn sử dụng chỉ cần khai báo #include<file.h> vào là xài thôi!

File Kèm Theo
File Type: rar thaydoitocdochopleddungngatngoai.rar (14.0 KB, 1761 lần tải)

thay đổi nội dung bởi: nhh, 09-07-2007 lúc 09:02 PM. Lý do: Attach file
nhh vẫn chưa có mặt trong diễn đàn