高级会员 
 
主题
回帖0
积分1988
阅读权限30
注册时间2012-2-14
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
 
#include <reg52.h> 
#include <intrins.h> 
 
typedef unsigned char uint8 ; 
typedef unsigned int  uint16; 
sbit BZ=P3^3; 
/* 
void delay(uint16 k) // k=1时,延时1.321ms 
{ 
uint16 i,j; 
for(i=0;i<k;i++) 
  for(j=0;j<257;j++); 
} 
void delay_us(uint8 t)     //1~255   US    12MHZ 
{ 
uint8 s; 
for(s=0;s<t;s++) 
_nop_(); 
}  
*/ 
void delay_ms(uint16 m)  //1~65535 MS 12MHZ 
{ 
uint16 d,g; 
for(d=0;d<m;d++) 
{ 
   for(g=0;g<1000;g++) 
   _nop_(); 
} 
   
} 
 
void BZ_P(bit tt,uint8 d,uint16 z) // NO/OFF;N;delay 
{ 
uint8 s; 
if(tt==1) 
{ 
  for(s=0;s<d;s++) 
  { 
   BZ=~BZ; 
   delay_ms(z); 
    
  } 
} 
 
} 
 
void LED_L(bit q,bit i,uint16 ww,uint16 jj) 
{ 
LED_Left(q,ww); 
LED_Right(i,jj); 
 
} 
void LED_Left(bit cc,uint16 aa)    //ON/OFF,ON/OFF,delay;delay 
{ 
uint8 n,tm; 
//cc=0; 
if(cc==1) 
{ 
  tm=0x80; 
  for(n=0;n<8;n++) 
  { 
   P1=~tm; 
   BZ_P(1,4,50); 
   delay_ms(aa); 
   tm>>=1; 
  } 
} 
} 
void LED_Right(bit dd,uint16 bb) 
{ 
uint8 n,tm; 
//dd=0; 
if(dd==1) 
{ 
  tm=0x01; 
  for(n=0;n<8;n++) 
  { 
   P1=~tm; 
   BZ_P(1,6,40); 
   delay_ms(bb); 
   tm<<=1; 
  } 
} 
    
}    
 
/*void LED_L2(bit ff,dd,uint16 a,b)    //ON/OFF,ON/OFF,delay;delay 
{ 
uint8 m; 
if(ff==1) 
{ 
  for(m=8;m>0;m--) 
  { 
   P1=~(1<<m-1); 
   BZ_P(0,3,100); 
   delay(a); 
  } 
 
} 
 
else if(dd==1) 
{ 
   for(m=0;m<8;m++) 
  { 
   P1=~(1<<m); 
   BZ_P(1,1,500); 
   delay(b); 
} 
} 
void main() 
{ 
while(1) 
{  
  LED_L(0,1,100,10); 
    
} 
} 
 
实现开/关左右流水灯+延时的功能,为什么就编译不过去呢? 
还有就是数码管的段操作 
bai=temp/100; 
   shi=temp%100/10; 
   ge=temp%10; 
这是3为数码管的推算,如果要是6,8位数码管,该怎么推算呢? 
 
请教高手!!!  |   
 
 
 
 |