历史上的今天
今天是:2025年01月15日(星期三)
2018年01月15日 | 单片机串行通讯应用程序
2018-01-15 来源:eefocus
许多数据采集系统都需要用到串口,串口的特点是:占用的硬件投资少,只需要很少的信号线,可以同步传输,也可以异步传送。传输数据的格式、速率可以变化。但是抗干扰性能不好,传输距离不够。本例程主要通过实验,演示串口通信的各种设置,上位机及其 单片机 的软件编程方法,数据的采集与处理等。也可以作为串口调试软件用。是一个非常实用的实验。能够方便地进行代码移植。
org 00h
jmp main
org 23h ;串行中断入口地址
jmp com_int ;串行中断服务程序
;*********** 主程序开始 *******************
org 30h
main:mov sp,#30h ;设置堆栈
lcall rest ;初始化
lcall comm ;串口初始化
jmp $ ;原地等待
; ************* 初始化 *********************
rest:mov p0,#00h ;禁止数码管显示
mov p2,#255
mov p1,#255 ;禁止LED显示
RET ;返回
;************** 串口初始化 *****************
;设置串行口工作方式1,定时器1作为波特率发生器
;波特率设置为 2400 ;
comm:mov tmod,#20h ;设置定时器T1工作方式2
mov tl1,#0f2h ;定时器计数初值,波特率 2400
mov th1,#0f2h ;定时器重装值
setb ea ;允许总的中断
setb es ;允许串行中断
mov pcon,#00h ;波特率不倍增
mov scon,#50h ;设置串口工作方式1,REN = 1 允许接收
setb tr1 ;定时器开始工作
ret ;返回
;*************** 串口中断服务程序 ***********
; 如果接收 0FF 表示上位机需要联机信号, 单片机 发送 0FFH作为
; 应答信号,如果接收到 数字 1~ n,表示相应的功能;
; 这里,如果收到 1 ,则 单片机 向计算机发送字符 'm';
; 如果收到 2 ,则 单片机 向计算机发送字符 'c';
; 如果收到其他的数据,则发送 'u';
com_int:clr es ;禁止串行中断
clr ri ;清除接收标志位
mov a,sbuf ;从缓冲区取出数据
cjne a,#0ffh,in_1 ;检查数据
mov sbuf,#255 ;收到联机信号,发送联机信号
jnb ti,$ ;等待发送完毕
clr ti ;清除发送标志
setb es ;允许串行中断
reti ;中断返回
in_1:cjne a,#01,in_2 ;如果收到1
mov sbuf,'m' ;发送 'm'
jnb ti,$ ;等待发送完毕
clr ti ;清除发送中断标志
setb es ;允许串行中断
reti ;中断返回
in_2:cjne a,#02,in_3 ;接收到 2
mov sbuf,'c' ;发送 'c'
jnb ti,$ ;等待发送完毕
clr ti ;清除发送中断
setb es ;允许串行中断
reti ;中断返回
in_3:mov sbuf,'u' ;收到其他数据,发送'u'
jnb ti,$ ;等待发送完毕
clr ti ;清除发送中断标志
setb es ;允许串行中断
reti ;返回
end
上一篇:单片机计数器功能实验程序
下一篇:RS232通信程序
史海拾趣
|
路由器天线DIY集目录 奶粉罐天线光盘天线易拉罐天线厨具漏勺天线卫星天线制作其他超强天线 无线路由器越来越普及,引出的讨论也越来越多。特别是信号强度,接收性的问题相当值得注意。而大家最经常想到、比较可行的办法就是采用增益天 ...… 查看全部问答> |
|
刚入手ARM开发,接到一个有关视频无线传输的课题,使用ARM2440/WinCE5.0。传输采用华硕的WL167G无线网卡(USB接口),可是在网上搜了很久。却始终没有找到WL167G在wince平台下的驱动源码。请有过这方面开发经验的同仁提供一点USB无线 ...… 查看全部问答> |
|
转载:CCS3.3设置支持float point support 的方法(针对28335) 最近发现好多朋友的CCS3.3安装后,在编译时会出现 然后在网上找 ,说是要在Build option中 设置 float point support 但是 打开之后没有这一选项,如下图那么具体的解决办法按下边步骤操作(插图)第一步:(前提安装了CCS3.3,以及升级包,还有需 ...… 查看全部问答> |
|
求助:TMS570 NHET 如何利用HAL Code Generatr 实现输入捕捉程序?? 我用利用HAL Code Generatr配置rti 的counter0的campare0 产生10ms中断, 配置rti compare0中断 设置rti中断间隔 然后根据中断计数实现一个占空比50%的周期200ms的脉冲 把NHET3配置成输入捕捉 在NHET13脚输出到NHET3脚作为输入信号, 用r ...… 查看全部问答> |
|
三个定时器 TIM1 TIM2和TIM3, 用TIM2做主模式其他两个做从,可以实现。但是以TIM3做主模式,TIM1和TIM2做从时,定时器无法启动。是不是在这种情况下TIM3不能做主模式啊?下面是程序代码,请大家帮帮忙 。 ARE AND/OR THE USE MADE BY ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 他把MT6592的性能来了个全面介绍,其中包括多项第一:全球第一个支持全高清1080p 30fps H.265和Google VP9 视频解码;全球第一个采用联发科技首创的ClearMotionTM 智能视频倍频技术等等,它可 ...… 查看全部问答> |




