问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

双机通信程序

发布网友 发布时间:2022-05-12 11:42

我来回答

1个回答

热心网友 时间:2023-10-30 18:41

#include <reg51.h> //单片机头文件
#define uchar unsigned char //宏定义,uchar字符代替unsigned char,即无符号字符型数据,占1个字节,取值于0-255
#define uint unsigned int //宏定义,用uint字符代替unsigned int,即无符号整数,
sbit p21=P2^1;//(按键端口)定义特殊功能寄存器的位变量
uint j,f;
uchar dat[]={0xff,0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,0x00};//发送控制LED的十六进制的数,依次为255,0,24,60,126,255,126,60,24,0。
void delay(uint x)//void为无返回值的函数,软件延时
{
uint k; //定规无符号整数k
while(x--)//while循环,弱非0,则执行循环体语句,
{
for(k=120;k>0;k--); //循环嵌套达到延时目的。
}
}
void serial_init() //using 0 中断初始化
{
P1=0x00;
p21=1;
SCON=0x50;//(工作在方式1下,REN设置为允许接收).给SCON控制寄存器赋值16进制数50,即01110000,01决定工作方式1,REN为第四个数字,即1,为允许两机接收。
PCON=0x00;//(不加倍) PCON寄存器定义:当值为1是,串口波特率加倍,其他则不加倍 (PCON除最高位外都输虚设的)
TMOD=0x20;//自动重装初值,波特率:9600。计数模式控制寄存器,方式2,初值自动重载8位计数器。
TH1=0xfd;//TH1是作为时间常数的寄存器的
TL1=0xfd;//TL1是作为8位计数器,可以实现TL1计数回0时自动重装时间常数,即将TH1中的数自动送给TL1,再次计数 (9600=11.0592*1000000/12/(0x100-0xfd)/32)
TR1=1;//T1运行控制位,启动T1定时器 (GATE=0 需要手动开启T1定时/计数器)
EA=1;//开启总中断,允许开启串口中断(中断允许位)
ES=1;//开启串口中断
}
void serial_inte() interrupt 4 //中断函数 串行口中断 P117
{

if(TI==0)//只让接收中断执行以下类容 软件清零 (TI是SCON发送中断标志位)
{
ES=0;
RI=0;//RI=1表示帧接收完成, 清零RI, (RI是SCON接受中断标志位) (串口发送数据之后就进入中断)
P1=SBUF; //当接收完一帧数据后,RI置1,此时如果开了全局中断EA和局部中断ES那么就会进中断,中断里面无论你怎么去读SBUF都不会清零RI
ES=1;
}

}

void main()
{
uint i,t;
P1=0xff;
serial_init();//串口初始化
while(1)
{
for(i=0;i<9;)
{
t=p21;
delay(1);//延时去抖动
if(p21==t&&p21==0)//再次判断是否按下
{
while(!p21);//判断是否弹起
delay(1);//延时去抖动
SBUF=dat[i];
while(!TI);//判断是否发送完成
TI=0; //清除发送结束标志位 (进入中断)
i++; //for循环最后的i++
delay(100);//使LED灯能点亮让人看见
}
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大同四区和市区的区别 大同云冈属于哪里 大同市云冈区建成区范围都有哪些 it wasn't long before i found a job.---before是什么意思 It wasn't long before a man from It wasn't long before和It won't be long before有什么区别吗? it wasn't long before和it won't be long before有什么不同?_百度知 ... 微信怎么查和一个好友的红包记录 马龙巴黎奥运会夺冠了吗 明天是中国的情人节??? 公司啦的联通专线,光猫接交换机在分给电脑,然后只有一个ip地址可以上网,怎么解决 光猫直接接交换机为什么要接第一个口 如何编写用TCP/IP的通讯程序 联通拿来的交换机可以连接路由器拨号 通信程序 联通光猫 交换机 路由器? 单片机多机通信程序 只有一个联通宽带账号,能实现 在光猫后面接交换机,然后从交换机接线到每个卧室的电脑上网吗 求助,联通的光纤猫可以直接接交换机吗 韩国kf94口罩没有二维码是假的吗? 淘宝上卖的kf94口罩是真的吗 https访问的页面无法嵌入分享按钮 大便出血吃药能治好吗? 大便出血好担心啊 自己蹲坑大便出血怎么办 大便出血,不疼或微疼,我是不是得了什么病?不治可以痊愈吗?望医生帮忙解答 有时大便带血,前几年吃的药,就好了。前不久又是,没吃药自己好了 我有点大便出血,好像有内外痔疮,平时久坐,爱便秘, 饮食爱吃辣椒,这个自己会好吗?需要用痔疮膏吗? 我突然大便出血一次,自己又好了,是怎么回事 大便出血不疼能自愈吗 安装联通的宽带,可不可以光猫上直接用网线连接一台电脑,然后从光猫另外的接口连接一台路由器? VB串口通信程序 联通机顶盒能连在交换机,交换机再连在光猫上吗? 如何利用Delphi 6编写Socket网络通信程序1 单片机串口通信程序对吗? 什么酒适合温着喝 什么酒加热有香味好喝? 白酒要温着喝的原因是什么 名侦探柯南剧场版绯色的弹丸日语版中文字幕,有没有百度云链接求分享_百度问一问 您好,融资利率=基准利率+(实际融资利率-基准利率)*95% ,请问基准利率和实际融资利率会不会变动? Iphone 6s没电自动关机后充了一个小时的电还没开机是怎么回事? 买了车损险,为什么还有人买玻璃险? 新买的苹果6s关机充电显示没充满,开机过后电量却显示百分百,这是为什么? 苹果手机关机了怎么才算充上电了 Win10专业教育版和专业版区别,功能一样吗? 怎样有效简单瘦肚子,瘦背瘦腰 什么方法可以瘦肚子瘦腰? 蛋白质减肥法的健康隐患,不要再盲目减肥,专家说出*吓一跳 我们平时常用的蛋白质减肥法有用吗 Https网站增加了百度分享代码提示网站不安全了?