// 以 16 进制发送一个 0-65535( 两字节 ) 数据之间的任一数,当单片机收到后在
数码管上动态显示出来,波特率自定。
// 选择单片机串口方式 1 时,有效数据位只有 8 位(二进制) 65535 转化为二进
制需要 16 位(且 16 位全为 1),换为十六进制也就是 4 位。串口助手一次发送
都是二位十六进制数发送的。由于这些原因,我们需要分两次传送数据。先传
16 进制的前两位,再传后两位。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint a1,a2,num;
uchar num1,flag;
sbitdula=P2^6; // 申明 U1锁存器的锁存端
sbitwela=P2^7; // 申明 U2锁存器的锁存端
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uintxms)
{
uinti,j;
for(i=xms;i>0;i--) //i=xms 即延时约 xms毫秒
for(j=110;j>0;j--);
}
void display(uint value) // 显示子函数
{
ucharwan,qian,bai,shi,ge; // 定义万千百十个位
wan=value/10000;
qian=value%10000/1000;
bai=value%1000/100;
shi=value%100/10;
ge=value%10;
dula=1;
P0=table[wan];
dula=0;
P0=0xff;
wela=1;