![]() |
![]() |
#6 |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
tại sao lại không (nhưng cũng phải mất vài chu kỳ máy)
Code:
#include <16F877A.h> #include <def_877a.h> #include <DEFS_16F877A.h> #device *=16 //su dung het ram trong pic # fuses NOWDT, XT, NOPROTECT, NOLVP, PUT # use delay (clock = 4000000) void DELAY(); int8 bien=0,x=0,quay; #int_ext void ngat() { x=0xaa; bien++; if(bien>1)bien=0;//dem=0->2 } void main() {; enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); ext_int_edge(H_TO_L); setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 ); set_timer1(0x0000);//thiet lap gia tri ban dau cho timer1 trisb=0x01; trisd=0; portd=0x00; while(true) { switch(bien) { case 0: { portd=0x01; delay(); for(quay=0;quay<=7;quay++) { portd<<=1;//quay trai delay(); if(x==0xaa) { x=0; break; } } break;} case 1: { portd=0x80; delay(); for(quay=0;quay<=7;quay++) { portd>>=1;//quay phai delay(); if(x==0xaa) { x=0; break; } } break;} } } } void delay(void) { int8 tam; for(tam=0;tam<=2;tam++) { if(x==0xaa) break; set_timer1(0x0000);//thiet lap gia tri ban dau cho timer1 while(TMR1IF==0) { if(x==0xaa) break; } TMR1IF=0; } }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. thay đổi nội dung bởi: tdm, 25-03-2011 lúc 08:37 PM. |
![]() |
![]() |