我们本次的作业是怎么用上位机通过串口操作控制单片机模块控制八个发光二极管的发光状态。
我是在单片机贴吧看的一个大神给出的答案,然后自己加工了一下,可是没法控制P2口的明灭
这是我的proteus图:
这是程序图:
#include<reg51.h>
#define uchar unsigned char
uchar num=0;
void delayms(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Uart_init()
{
SCON=0xd0; //SM1=1 REN=1
TMOD=0x20; //D5=1 D4=0 即M1=1 M0=0
TH1=0xfd; //TH1=0XFD TL1=0XFD 将波特率设为9600
TL1=0xfd;
TR1=1; //启动定时器1
ES=1; //打开串口中断
EA=1; //打开总中断
}
void main()
{
Uart_init();
while(1);
}
void interrupt_uart() interrupt 4 //串口中断优先等级为4
{
if(TI)
{
TI=0;
REN=1; //不发送时允许接收
}
if(RI)
{
RI=0; //先把接收标志位清零
num=SBUF; //把数据送给SBUF
P2=num;
num++;
SBUF=num; //SBUF再接收加1以后的数据
REN=0; //发送时不允许接收
}
}
可是还是没法通过串口调试助手发送指令控制二极管发光
PS:波特率,COM之类的都没问题
|