Ðề tài: ngắt timer
View Single Post
Old 09-08-2008, 12:11 AM   #3
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi lekhoa View Post
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"

thay đổi nội dung bởi: phamminhtuan, 09-08-2008 lúc 12:40 AM.
phamminhtuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn