一、上位机发送信号控制单片机
1、显示对应的流水灯
实现现串口通信接收上位机的信息,控制流水灯的亮灭与亮的位置,发送流水灯控制信号,单片机接收信号并显示对应的流水灯。
#include <reg52.h>
#define uchar unsigned char;
//sbit LED = P1^4;
uchar UART_buff;
bit Money = 0;
//----------------------------------------------
void main (void)
{
SCON = 0x50; //串口方式1, 8-n-1, 允许接收.
TMOD = 0x20; //T1方式2
TH1 = 0xFD; //[url=]//9600bps@11.0592MHz[/url]
TL1 = 0xFD;
TR1 = 1;
ES = 1; //开中断.
EA = 1;
while(Money==0); //等待中断触发,等着再次输入信号
}
//----------------------------------------------
void ser_int (void) interrupt 4 //一旦串口打开了,就执行该中断服务函数,中断号为4
{
if(RI == 1) //如果收到消息.
{
RI = 0; //清除标志.
UART_buff = SBUF; //将接收的数据变为uchar类型
P1 = UART_buff; //点亮对应的流水灯
if(UART_buff == '$') Money = 1; //中断返回,一旦有$符号,中断就永久触发了,不断循环收发消息
}
}
2、显示对应数码管
现串口通信接收上位机的信息,控制数码管显示的位置,发送数码管的位选信号,单片机接收信号并显示对应的数码管,显示数字为9。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
Uartinit();
void delay(uint x);
sbit dula= P2^6;
sbit wela= P2^7;
uchar Uart_buff;