Trích:
Nguyên văn bởi lekhoa
Các bác xem giúp em chương trình này, ko biết bị lỗi gì mà chương trình chỉ xuất ra v=5 liên tục ( mục tiêu của em là tăng v lên 1 đơn vị sau mỗi 10ms = ngắt của timer1) . thx nhieu
Code:
#include <16F877a.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6, rcv=PIN_C7)
#include <def_877a.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
char data;
int a;
int16 xung,v;
#INT_TIMER1
void timer1_isr()
{
v=v+1;
set_timer1(59286);
}
void main()
{ setup_timer_1 ( T1_DIV_BY_8);// --> setup_timer_1 ( T1_internal | T1_DIV_BY_8);
ENABLE_INTERRUPTS(INT_TIMER1);
ENABLE_INTERRUPTS(GLOBAL);
set_timer1(59286);
x=5; // --> v=5;
while(1)
{
delay_ms(100);
printf("%x",v);
}
}
|
Tôi thấy bạn phamminhtuan nói đúng, nếu chương trình đúng như vậy thì chắc chắn dịch sẽ có lỗi, bạn thử thay x bởi v, chỗ setup_timer1 nữa thử xem, có phải bạn dùng dao động nội không