利用双单片机实现双机串行通信,其功能要求如下:
A.基本要求:
1. 甲机通过按键经串口控制乙机的 LED 灯点亮与熄灭;
2. 甲机通过按键控制串口向乙机发送按下的次数,按下的次数显示在乙机对应的 1 位数码
管上,超过 10 次进入下一个循环;
3. 乙机通过按键控制串口向甲机发送一数值,并从该数值开始进行倒计时,倒计时完成后
通过蜂鸣器提示。
B.扩展部分:
1. 乙机通过按键控制串口将预先存放在其对应的 ROM 中的 0-9 共 10 个字符发送到甲机的对
应的 ROM 中,并通过 1 位数码管进行循环显示。
甲机代码:
#include "reg52.h"
sbit KEY1=P3^2;
sbit KEY2=P3^3;
sbit BEEP=P2^0;
unsigned char Receive=0;
unsigned char Table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned int Num=0;
unsigned char TIME=0;
void KEY_Init(void)
{
IT0=1; //外部中断 0 触发类型选择,0 为电平,1 为边沿触发
IT1=1;
EX0=1;
EX1=1;
EA=1;
}
void UART_Init(void)
{
TMOD|=0x20; //设置波特率发生器为定时器 2 为 8 位自动重装载模式
PCON = 0x00; //设置波特率不加倍(0x80 加倍)
SCON=0x50; /* 配置为 8 位 UART,允许接收 */
TH1=0xFd; //设置波特率 9600
TL1=0xFd;
TR1=1; //开启定时器 1
ES=1;
EA=1;
}
void SendChar(unsigned char TempC)
{
SBUF=TempC;