标签:ros 语言 软件 ini har size fine 程序 div
一、51系列单片机与PC端串口调试助手互相进行串口通信的单片机C语言程序
#include <reg52.h> #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[6]="I get"; //uchar code table[]="I get"; void init()//初始化函数 { TMOD=0x20;//0010 0000定时器工作方式为方式2 8位自动重装 TH1=0xfd;//初始化计数器高8位 1111 1101 TL1=0xfd;//初始化计数器低8位 TR1=1;//启动定时器1 REN=1;//允许串行中断接收 SM0=0;//设定串口工作方式 为方式1(10位异步通信) SM1=1;//设定串口工作方式 EA=1;//打开全局中断 ES=1;//打开串口中断 ES(IE.4)是串行口中断允许位 } void main() { init(); while(1) { if(flag==1)//检测变量flag是否为1 为1则中断结束 { ES=0;//关闭串口中断 for(i=0;i<6;i++)//发送数据 { SBUF=table[i]; while(!TI);//TI是串口发送完成标志,发送完成硬件自动置TI为1并发起中断进入中断程序 TI=0;//TI=0,发送未完成 } SBUF=a;//接收数据 while(!TI);//while(1);是一条指令,它让单片机停在这个位置,一般用来检测中断,只有cpu收到中断指令,才会跳出wh ile(1),进入中断服务子程序 TI=0; //TI串口发送中断标志位。每发送完一个串行帧,由硬件置位TI。 //CPU响应中断时,不能自动清除TI,TI必须由软件清除。 ES=1;//打开串口中断 flag=0; } } } void ser() interrupt 4//4为串口中断,中断服务程序(函数)不需要申明,所以可以放在main函数后面 { RI=0;//RI(SCON.0)串行口接收中断标志位,RI清0取消中断申请便于接收下一个中断 a=SBUF;//接收、发送缓存器赋于变量a flag=1;//置标志位为1 }
标签:ros 语言 软件 ini har size fine 程序 div
原文地址:https://www.cnblogs.com/AChenWeiqiangA/p/13178267.html