#include"STC12C5A.h"
unsigned char reg[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
sbit LED=P0^0;
sbit smg_sck = P0^4;
sbit smg_rck = P0^5;
sbit smg_rst = P0^6;
sbit smg_dat = P0^7;
void delay_ms(unsigned char time)
{
unsigned char t;
while(time--)
{
t=1500;
while(t--);
}
}
void sendbyte(unsigned char byte)
{
unsigned char i;
for( i=0;i<8;i++)
{
unsigned char temp;
temp=byte&(1<<i);
if(temp)
smg_dat=1;
else smg_dat=0;
smg_sck=0;
delay_ms(3);
smg_sck=1;
delay_ms(3);
}
smg_rck=0;
delay_ms(3);
smg_rck=1;
delay_ms(3);
}
void show(unsigned char num)
{
sendbyte(reg[num]);
}
void display(unsigned char dat)
{
show(dat/1000);
P0=(P0&0XF0)|1 ;
delay_ms(2);
show(dat%1000/100);
P0=P0&0XF0|2 ;
delay_ms(2);
show(dat%100/10);
P0=P0&0XF04|4 ;
delay_ms(2);
show(dat%10);
P0=P0&0XF0|8 ;
delay_ms(2);
}
void key()
{
LED=1;
P2=0x0f;
if(P2!=0X0F)
{
delay_ms(15);
if(P2!=0X0F)
{
if (P2==0X7E)
{
while(1)
show(1) ;
}
}
}
}
void main ()
{
LED=1;
delay_ms(3000);
LED=0;
delay_ms(3000);
LED=1;
delay_ms(3000);
LED=0;
delay_ms(3000);
while(1)
{
display(234);
key();
}
}
烧到单个片机上后,7个led灯全亮,数码管显示234,按键盘没有反应。 于是乎,想看看函数执行得怎么样,在main函数最开始先熄灭led0,三秒后点亮它。重复两次,结果烧到单片机后,数码管直接显示234,没有led0的变化过程,怎么回事? 它怎么直接就跳过去了???
|