我数码管显示,暂停看可以显示数字,但是A段好像都显示不出来,而且我怎么增加延时都没法实现消残影。但是我在开发板上可以实现啊。为什么到仿真上就没法使用。
代码如下
#include <REG52.h>
#include "intrins.h"
#define KEY P3
sbit LED1=P0^1;
sbit K1=P3^0;
typedef unsigned long u32;
typedef unsigned short u16;
typedef unsigned char u8;
code u8 led_buff[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0XFF,0x8e,0xc1};
u8 cnt=0;
u8 yi=1,er=2,san=3,si=4,wu=5,liu=6,qi=7,ba=8;
void Init_HC573(u8 num)
{
switch(num)
{
case 6:P2=(P2&0X0F)|0XC0;break;
case 7:P2=(P2&0X0F)|0Xe0;break;
}
}
void Delay2ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 22;
j = 128;
do
{
while (--j);
} while (--i);
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void key_on()
{
static u8 flag=0;
KEY=0x0f;
if((KEY!=0X0F)&&(flag==0))
{
Delay10ms();
flag=1;
if(K1==0)
{
cnt=1;
}
}
else if(KEY==0x0f)
{
flag=0;
}
}
void led_on(void)
{
Init_led(led_buff[yi],0);
Init_led(led_buff[er],1);
Init_led(led_buff[san],2);
Init_led(led_buff[si],3);
Init_led(led_buff[wu],4);
Init_led(led_buff[liu],5);
Init_led(led_buff[qi],6);
Init_led(led_buff[ba],7);
}
void main()
{
//Timer1Init();
while(1)
{
key_on();
led_on();
}
}
|