![]() |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Oct 2007
Bài gửi: 22
: |
![]() Làm sao để e thay thế delay = timer vậy??
VD: output_a(0xff); delay_ms(1000); output_a(0x00); delay_ms(1000); e muốn thay delay = timer để sau khi xuất porta = 0xff thì làm việc khác, sau khi timer đủ 1s thì quay lại tiếp tục xuất porta = 0x00. E định xài ngắt nhưng với hơn chục delay thì ngắt sao đủ đây!!!??? cho e hỏi thêm chương trình này. cứ sau vài phút là pic của e đơ lun, ko nhận đc & truyền đc dữ liệu. Ko bít sao nữa, phải reset lại mới chạy đc. Pác nào xem giúp e lỗi ở đâu với ?? E định để khoảng 5~10 phút reset pic 1 lần nhưng cái WDT e ko bít cấu hình thời gian dài như vậy? Trong datasheet ghi Watchdog Timer Time-out Period = 33ms với 1:1, vậy e set 1:128 cũng đc có 5s, ko bít e có hiểu sai ko nữa. (e xài 20Mhz) Code:
#include "D:\Document\Working Files\CAN\usart\main.h" //#include <18F4580.h> #fuses HS,NOPROTECT,NOLVP,NOWDT #use delay(clock=20000000) #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8) #include <can-18F4580.c> #define data_id_a 0x201 #define data_id_b 0x202 #define data_id_c 0x203 #define data_id_d 0x204 #define data_id_e 0x205 #define data_id_m 0x301 #define data_id_n 0x302 #define data_id_o 0x303 #define data_id_p 0x304 #define data_id_q 0x305 #define data_id_r 0x306 #define data_id_s 0x307 #define data_id_t 0x308 #define data_id_u 0x309 #define data_id_v 0x30a /////////////////////////////////////////////////////////////////// char t; int dem; #byte porta = 0xf80 #INT_RDA void rda_isr() { t=getc(); dem=3; putc(t); } /////////////////////////////////////////////////////////////////// void main() { int mang[16]={0,1,2,3,4,5,6,7,8,9,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f}; int *pointer,led,i; int data1,data2,data3,data4,data5,data3a,data4a; int data6,data7,data8,data9; int data10,data11,data12,data13; set_tris_a(0x00); set_tris_d(0xff); pointer=&mang[0]; can_init(); ENABLE_INTERRUPTS(GLOBAL); ENABLE_INTERRUPTS(INT_RDA); i=16; while(1) { output_a(t); dem=0; /* if(t==0X01) { if ((can_tbe()) && (dem==1)) { led=*pointer; can_putd(SET_LED_ID_A,&led , 1, 1, 1, 0); delay_ms(250); dem--; } pointer++; i--; if(i==0) { i=16; pointer=&mang[0]; } }*/ /////////////////////////////////////////////////////////////////// if (t==0x01) //quay thuan { if ((can_tbe()) && (dem>0)) { data1=0x01; can_putd(data_id_a,&data1 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x02) //quay nghich { if ((can_tbe()) && (dem>0)) { data2=0x02; can_putd(data_id_b,&data2 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x03) //inc { if ((can_tbe()) && (dem>0)) { data3=0x03; can_putd(data_id_c,&data3 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x04) //dec { if ((can_tbe()) && (dem>0)) { data4=0x04; can_putd(data_id_d,&data4 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x05) //stop dong co buoc { if ((can_tbe()) && (dem>0)) { data5=0x05; can_putd(data_id_e,&data5 , 1, 1, 1, 0); delay_ms(250); dem--; } } /////////////////////////////////////////////////////////////////// else if (t==0x06) //b1 { if ((can_tbe()) && (dem>0)) { data6=0x06; can_putd(data_id_m,&data6 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x07) //b2 { if ((can_tbe()) && (dem>0)) { data7=0x07; can_putd(data_id_n,&data7 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x08) //b3 { if ((can_tbe()) && (dem>0)) { data8=0x08; can_putd(data_id_o,&data8 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x09) //b4 { if ((can_tbe()) && (dem>0)) { data9=0x09; can_putd(data_id_p,&data9 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x0a) //b5 { if ((can_tbe()) && (dem>0)) { data10=0x0a; can_putd(data_id_q,&data10 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x0b) //b6 { if ((can_tbe()) && (dem>0)) { data11=0x0b; can_putd(data_id_r,&data11 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x0c) //tu dong { if ((can_tbe()) && (dem>0)) { data12=0x0c; can_putd(data_id_s,&data12 , 1, 1, 1, 0); delay_ms(250); dem--; } } else if (t==0x0d) //stop dog nap chai { if ((can_tbe()) && (dem>0)) { data13=0x0d; can_putd(data_id_t,&data13 , 1, 1, 1, 0); delay_ms(250); dem--; } } } } thay đổi nội dung bởi: KA52, 01-07-2008 lúc 12:22 AM. |
![]() |
![]() |
|
|