數碼管上可以正常顯示,串口助手接收數據有問題。找不到什么問題,請大佬們幫忙看看,謝謝!
單片機源程序如下:
#include <reg51.h>
#define BAUD 9600
#define SYSTEMCLOCK 11059200L
unsigned char rx,i;
bit flag=0;
unsigned char code ledK[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0X00};
unsigned char disp[8]={17,17,17,17,17,17,17,17};
unsigned char wei=0;
void update(void)
{
disp[0] = rx & 0x0f;
TI = 1;
printf("%s\n",rx);
TI = 0;
}
void uart()
{
SCON=0x50; //1.選擇串口工作方式,方式1,允許接收
TMOD=0x20; //2.設定波特率,設置T1(方式2,初值,啟動)
TL1=256-SYSTEMCLOCK/12/32/BAUD;
TH1=256-SYSTEMCLOCK/12/32/BAUD;
TR1=1;
EA=1;
ES=1;
}
void rec()
{
if(flag)
{
flag = 0;
update();
ES = 1;
}
}
void main(void)
{
uart();
TMOD &=0xF0;
TMOD |=0x01; //定時器方式1
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
P1=0x00;
P0=0xFF;
while(1)
{
rec();
}
}
void ref_SMG(void)
{
P1=0x00;
P0=~(1<<wei);
P1=ledK[disp[wei]];
if(++wei>7) wei=0;
}
void int_t0(void) interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ref_SMG();
}
void uart_int(void) interrupt 4
{
if(RI)
{
RI=0;
rx=SBUF;
flag=1;
ES = 0;
}
}
8a6b8093064d061d9859837ea0c6c3f2.png (46.21 KB, 下載次數: 33)
下載附件
2022-6-28 11:06 上傳
|