立即注册 登录
返回首页

uid:155764的个人空间

日志

数码管显示串口发送值

已有 683 次阅读2017-10-31 17:43

#include<reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
unsigned char code LedChar[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char LedBuff[8] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char T0RH = 0;
unsigned char T0RL = 0;
unsigned char RxdByte = 0;
void ConfigTimer0(unsigned int ms);
void ConfigUART(unsigned int baud);
void main()
{
P0 = 0x00;
EA = 1;
ConfigTimer0(1);
ConfigUART(9600);
while(1)
{
LedBuff[7] = LedChar[RxdByte & 0x0F];
LedBuff[6] = LedChar[RxdByte >>4];
  }
}
void ConfigTimer0(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200/12;
tmp = (tmp*ms)/1000;
tmp = 65536 - tmp;
tmp = tmp + 31;
T0RH = (unsigned char)(tmp>>8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 = 1;
TR0 = 1;
}
void ConfigUART(unsigned int baud)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = 256 - (11059200/12/32)/baud;
TL1 = TH1;
ET1 = 0;
ES = 1;
TR1 = 1;
}
void LedScan()
{
static unsigned char index = 7;
P0 = 0x00;
P1 = (P1 & 0x00)|index;
P0 = LedBuff[index];
if(index>0)
index--;
else 
index = 7;
}
void InterruptTimer0() interrupt 1
{
TH0 = T0RH;
TL0 = T0RL;
LedScan();
}
void InterruptUART()interrupt 4
{
if(RI)
{
RI = 0;
RxdByte = SBUF;
SBUF = RxdByte;
  }
if(TI)
{
TI = 0;
  }
}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部