View Single Post
Old 25-03-2011, 08:31 PM   #6
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi foremostpirate View Post
Vậy không có cách nào sao ? Hhuhuhu!!!!!!
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;
 }
}
File Kèm Theo
File Type: zip ngat.zip (53.9 KB, 18 lần tải)
__________________
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.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn