历史上的今天
今天是:2025年04月02日(星期三)
2021年04月02日 | C51单片机与PC串口通信的单片机部分程序
2021-04-02 来源:eefocus
注意波特率是9600
功能:电脑通过串口给单片机发一个字节,单片机收到后又给电脑发回去
、#include
#define uchar unsigned char
#define uint unsigned int
uint temp;
bit flag;
void init_ser1();
main()
{
init_ser1();
while(1)
{
if(RI==1)
{
P1=SBUF;
RI=0;
}
if(flag==1)
{
ES=0;//暂时关闭接收
flag=0;
SBUF=temp;
while(!TI);//等待发送完毕
TI=0;
ES=1;
}
}
}
void sel() interrupt 4
{
RI=0;
P1=SBUF;
temp=SBUF;
flag=1;
}
void init_ser1()
{
REN=1;
SM0=0;
SM1=1;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
EA=1;
TR1=1;
ES=1;
}
//======声明======
#include
unsigned char Read_Keyboard();
void RS232_SendData(unsigned char Sdata);
//======延迟函数======
void delay(unsigned int t)
{
for(;t>0;t--); //延迟循环
}
//======UART初始化函数=====
void RS232_Init()
{
SCON=0x50; //0101 0000 UART工作模式1,REN=1(本位为串行接收启用位1:开始接收 0:停止接收)
TMOD=0x20; //0010 0000 Timer1 工作模式2
PCON=0x80; //SMOD1=1
TH1=0xfa; //波特率9600 bps at 11.0592MHZ
TL1=0xfa; //波特率9600 bps at 11.0592MHZ
TR1=1;
}
//======主函数============
void main()
{
unsigned char Keyboard_Status=0xff; //定义按键
RS232_Init(); // 初始化UART
while(1)
{
Keyboard_Status=Read_Keyboard()|0xf0; //读取按键值(屏蔽高4位)
//
switch(Keyboard_Status)
{
case ~0x01:RS232_SendData('A');break;
case ~0x02:RS232_SendData('B');break;
case ~0x04:RS232_SendData('C');break;
case ~0x08:RS232_SendData('D');break;
default:RS232_SendData('X');break;
}
}
}
//===========发送数据函数========
void RS232_SendData(unsigned char Sdata)
{
SBUF=Sdata; //发送数据
while(TI==0); //等待发送结束
TI=0; //清除发送结束标志
}
//========读取按键函数==========
unsigned char Read_Keyboard()
{
unsigned char Keys_Value; //定义按键变量
unsigned char Keys_Temp;
do
{
P1=0xff; //P2口置高,准备读取按键状态
Keys_Temp=P1; //读取按键状态
delay(150); //消抖延时
P1=0xff; //P2口置高,准备读取按键状态
Keys_Value=P1; //读取按键状态
}
while(Keys_Value!=Keys_Temp); //如果读状态不一致,则重复读取键值
return Keys_Value; //返回按键状态值
}
上一篇:51单片机C中.c文件和.h文件
史海拾趣
|
摘要:对影响军用PWM型开关稳压电源可靠性的因素作出较为详细的分析比较,并从工程实际出发提出一些提高开关电源可靠性的建议。 关键词:开关电源可靠性 电子产品,特别是军用稳压电源的设计是一个系统工程,不但要考虑电源本身参数 ...… 查看全部问答> |
|
尽管大众关注的热点聚焦于高端移动设备,比如苹果公司的iPhone,但低端市场同样是热潮涌动,至少在技术领域是这样。摩托罗拉公司的F3 Fone就是这种入门级产品的一个很好例子。为了确认这一领域中的技术创新水平,Portelligent公司在这款双频GSM手机 ...… 查看全部问答> |
|
原程序用C编写。原理图是用PROTEL绘制。 系统的电路原理图分两部分:1是由ATmel公司的 AT89C52实现的单片机及键盘电路原理图。二是由 STK672-040芯片实现的脉冲分配与驱动电路原理图。 觉得不错的朋友别忘记回帖哦。 [ 本帖最后由 cooljewel 于 ...… 查看全部问答> |
|
红外遥控MP3小音箱,遥控板自制,使用锂电池,USB口充电,可以遥控关机、调音量、静音等功能,所有功能既可以用遥控器控制,也可以用音箱上的按键控制,MCU使用at89c2051,音量调节使用美信的数字电位器。 感兴趣联系owlcjy@163.com… 查看全部问答> |
|
山体滑坡的监测主要依靠两种传感器的作用:液位传感器和倾角传感器。在山体容易发生危险的区域,沿着山势走向竖直设置多个孔洞,每个孔洞都会在最下端部署一个液位传感器,在不同深度部署数个倾角传感器。由于该地区的山体滑坡现象主要是由雨水侵蚀 ...… 查看全部问答> |
|
S3C2440有很多管脚没有用到,默认是GPIO脚。 有个寄存器PORT PULL-UP REGISTER (GPBUP-GPJUP) The port pull-up register controls the pull-up resister enable/disable of each port group. When the corresponding bit is 0, the pull-up resi ...… 查看全部问答> |
|
有一项目要用到EVC,,我想用老版3.0在微软的下载中心下了个, 但找不到Product Number and User ID(共20位)..谁知道啊...… 查看全部问答> |
|
我马上就进入大三了,再过三四个月就要走向社会,不过在这之前好像还有个选择, 那就是考研,说实话,要考研的话,只要想考肯定是能考上的,不过,现在正在迷 茫中…… & ...… 查看全部问答> |




