28-07-2010, 10:37 AM
|
#5
|
Đệ tử 3 túi
Tham gia ngày: Jun 2010
Bài gửi: 57
:
|
Trích:
Nguyên văn bởi pic_13
các pác thử xem cái code dưới của em sai cái gì mà chạy sai vậy ta.
bài này đơn giản chỉ là em dùng ngắt time2 để các led nháy đồng thời trên cả
2 cổng b và c
================================================== =====
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int x=0,y=0,count=0;
// chuong trinh ngat
#int_timer2
void interrupts_timer2(x)
{x++;if(x==5)x=1;set_timer2(0);
switch(x)
{case 1: portb=0xaa;break;
case 2: portb=0x55;break;
case 3: portb=0xe7;break;
case 4: portb=0x18;break;
}
}
void main()
{
trisb=0x00;
trisc=0x00;
portb=0x00;
portc=0x00;
x=0;
PORT_b_PULLUPS(1);
SETUP_TIMER_2(T2_DIV_BY_16,256,16);//CHO PHEP NGAT SAU 65536US
ENABLE_INTERRUPTS(INT_TIMER2);
ENABLE_INTERRUPTS(global);
delay_us(65536);
while(true)
{portc=0xaa;delay_us(65536);
portc=0x55;delay_us(65536);
portc=0xe7;delay_us(65536);
portc=0x18;delay_us(65536);
}
}
|
mô phỏng có hện tượng gì?
bạn thử set_timer2(0) trong hàm main xem sao?
|
|
|