标题:
Proteus仿真 虚拟终端思路求教
[打印本页]
作者:
田所浩二单推人
时间:
2021-6-19 21:56
标题:
Proteus仿真 虚拟终端思路求教
如下图所示,P1口接8个按钮,用来控制P2口的8位LED发光管,按下某按钮,对应发光管点亮,再按下该按钮,灯灭,每次有键按下时,其键号通过串行口发送给虚拟终端。
思路求教
2.jpg
(187.42 KB, 下载次数: 37)
下载附件
2021-6-19 21:56 上传
作者:
hoodieboi
时间:
2021-6-27 00:36
#include "reg52.h"
#include "led.h"
void delay(uint i)
{
while(i--);
}
void UartConfig()
{
TMOD|=0x20; //设置计数器1的工作方式2
TH1=0xfd; TL1=0xfd; //设置计数器1的初值,决定波特率9600
PCON=0x00; // 波特率倍增0x00不加倍
SCON=0x50; //设置工作方式1 开启接受允许
EA=1; //开启总中断
ES=1; //开启串口接受中断
TR1=1; //计数器1开始运行
}
void sendChar(uchar tem)
{
SBUF=tem; //接收到的数据放入发送缓存器发送
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
void keypros()
{
if(KEY1==0)
{
delay(50);
if(KEY1==0)
{
led1=~led1;
sendChar('1');
}
while(!KEY1);
}
else if(KEY2==0)
{
delay(50);
if(KEY2==0)
{
led2=~led2;
sendChar('2');
}
while(!KEY2);
}
else if(KEY3==0)
{
delay(50);
if(KEY3==0)
{
led3=~led3;
sendChar('3');
}
while(!KEY3);
}
else if(KEY4==0)
{
delay(50);
if(KEY4==0)
{
led4=~led4;
sendChar('4');
}
while(!KEY4);
}
else if(KEY5==0)
{
delay(50);
if(KEY5==0)
{
led5=~led5;
sendChar('5');
}
while(!KEY5);
}
else if(KEY6==0)
{
delay(50);
if(KEY6==0)
{
led6=~led6;
sendChar('6');
}
while(!KEY6);
}
else if(KEY7==0)
{
delay(50);
if(KEY7==0)
{
led7=~led7;
sendChar('7');
}
while(!KEY7);
}
else if(KEY8==0)
{
delay(50);
if(KEY8==0)
{
led8=~led8;
sendChar('8');
}
while(!KEY8);
}
}
void main()
{
UartConfig();
P2=0xff;
while(1){keypros();}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1