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);
ENABLE_INTERRUPTS(INT_TIMER1);
ENABLE_INTERRUPTS(GLOBAL);
set_timer1(59286);
x=5;
while(1)
{
delay_ms(100);
printf("%x",v);
}
}
|
Mình không thấy bạn khai báo biến x, chắc chắn dịch sẽ báo lỗi chứ đừng nói gì tới việc in được ra số 5.
Có lẽ bạn post chương trình chưa đầy đủ vì có vài biến khai báo chẳng để làm gì, vài biến thì phải làm nhưng lại không khai báo, nếu đúng y chang như chương trình này thì kết quả của bạn ra luôn là 5 là hoàn toàn vô lý vì "chưa dịch được"