/////////////////////////////////
//功能描述:串口通讯之蜂鸣器
//单 片 机:51系类单片机
//编 写:l
//日 期:2010
//版 本:1.0
/////////////////////////////////
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Num,Flag,z,b;
int a,ge,shi,bai;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,
0x76,0x79,0x38,0x3f,0};
sbit beep=P2^3;
sbit duan=P2^6;
sbit wei=P2^7;
void bee();
void Run();
void delay(uchar z);
main()
{
init();
while(1)
{
if(Flag==1)
{
Flag=0;
ES=0;
if(a=='0')
{
duan=1;
P0=table[0];
duan=0;
P0=0xff;
wei=1;
P0=0xfe;
wei=0;
delay(1);
}
ES=1;
}
}
}
/////////////////////////////////
//函数功能:初始化函数
//输入函数:
//返回函数:
/////////////////////////////////
init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
beep=1;
}
/////////////////////////////////
//函数功能:中断函数
//输入函数:
//返回函数:
/////////////////////////////////
void Break() interrupt 4
{
RI=0;
a=SBUF;
Flag=1;
}
/////////////////////////////////
//函数功能:延时子函数
//输入函数:
//返回函数:
/////////////////////////////////
void delay(uchar z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}
以上程序中 如果pc向单片机发送 0 则单片机的数码管显示0
但是在if(a=='0')
{
duan=1;
P0=table[0];
duan=0;
P0=0xff;
wei=1;
P0=0xfe;
wei=0;
delay(1);
}
这段程序中 如果写if(a=='0')数码管就可以显示
如果写if(a==0)数码管就显示不了
我知道pc发送到单片机的是ASCII码 听别人说是ASCII码与十进制间自动转换的但是以上 明显没有转换 所以请教下 ~~~~~ |