- 130
- 0
- 约1.45千字
- 约 5页
- 2016-11-29 发布于重庆
- 举报
基于Proteus虚拟终端51单片机仿真串口发送和接收字符串
先上图:实验程序:/********************************************************************************** 【编写时间】: 2016年6月12日* 【作 者】: 小瓶子* 【实验平台】: Proteus 7* 【内部晶振】: 11.0592mhz* 【主控芯片】: STC89C51* 【编译环境】: Keil μVisio4* 【程序功能】: 利用虚拟中断实现串口数据的发送和接收 **********************************************************************************/#include reg51.h #define uint unsigned int#define uchar unsigned char//毫秒级延时函数void delay(uint x){ uchar i; while(x--) { for(i = 0;i 120;i++); }}//字符发送函数void putchar(uchar data1) {SBUF = data1; //将待发送的字符送入发送缓冲器while(!TI); //等待发送完成TI = 0; //发送中断标志请0}//字符串发送函数void putstring(uchar *dat){ while(*dat != \0) //判断字符串是否发送完毕 { putchar(*dat); //发送单个字符 dat++; //字符地址加1,指向先下一个字符 delay(5); }}//串口初始化函数void serial_init(){uchar c = 0; SCON = 0x50; //串口方式1 ,允许接收 TMOD = 0x20; //T1工作于方式2 PCON = 0x00; //波特率不倍增 TL1 = 0xfd; TH1 = 0xfd; // 波特率设置为9600 EA = 1; //开总中断ES = 1; //开串口接收中断}//主函数void main(){serial_init(); //串口初始化 TR1 = 1; //定时器开启 delay(200); putstring(Receiving from 8051...\r\n); //串口向终端发送字符串,结尾处回车换行 putstring(----------------------\r\n); delay(50);while(1); }//串口中断void revdata() interrupt 4{ uchar temp; if(RI == 0) return; //如果没有接收中断标志,退出中断 ES = 0; //关闭串口中断 RI = 0; //清串行中断标志位 temp = SBUF; //接收缓冲器中的字符 putchar(temp); //将接收的字符发送出去 ES = 1; //开启串口中断}仿真:
您可能关注的文档
最近下载
- 2023年江苏省常州市中考语文试卷附参考答案.pdf VIP
- 四川专升本数学2025年真题 及答案 .pdf VIP
- 2026年寒假特色作业模板【可编辑 可打印】.pptx
- 任务一短期投资的核算.ppt VIP
- 生物必修二全套课件.ppt VIP
- 2023年江苏省常州市中考语文试卷.docx VIP
- 2025年江苏高考地理真题(解析版).docx
- 2026年教案课件-中华民族共同体概论-第1-9讲-混一南北与中华民族大统合-教案合集-新版.pdf VIP
- 新解读《GB_T 39329-2020增材制造 测试方法 标准测试件精度检验》.docx VIP
- 医疗器械部门职责与岗位划分指南.docx VIP
原创力文档

文档评论(0)