历史上的今天
返回首页

历史上的今天

今天是: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


推荐阅读

史海拾趣

冠西电子(COSMO)公司的发展小趣事

冠西电子(COSMO)公司成立于1981年,起初便专注于光电元件产品的制造。公司创始人凭借对电子技术的深刻理解和市场需求的敏锐洞察,逐步将冠西电子打造成光电元件领域的专业制造商。通过不断的技术创新和产品质量提升,冠西电子逐渐在电子行业中崭露头角。

Elytone Electronics Co Ltd公司的发展小趣事

在技术创新取得突破后,Elytone公司开始积极拓展国内外市场。他们通过参加国际电子展、建立海外销售网络等方式,不断扩大产品的影响力。同时,公司还加强了与国内外知名企业的合作,共同研发新产品,进一步提升了市场竞争力。

Displaytech公司的发展小趣事

2012年,Displaytech进行了公司重组,SEACOMP成为公司各部门的主要实体。这次重组不仅优化了公司的组织架构,也进一步整合了公司的资源,提高了运营效率。同时,公司还在中国东莞购买了一家制造工厂,命名为MH MFG,加强了电子合同制造部门的力量。

这些故事只是Displaytech公司发展历程中的一部分,但它们充分展示了公司在电子行业中的实力、创新精神和国际化视野。通过不断的技术创新、产品升级和市场拓展,Displaytech已经成为电子行业中一家具有影响力的企业。

Aptos Technology公司的发展小趣事

Aptos Technology成立于2006年,正值电子科技行业蓬勃发展的时期。初创时期的Aptos面临着资金短缺、技术积累不足以及市场竞争激烈等多重挑战。然而,凭借其独特的SiP-System in Package技术,公司成功在微电子封装领域获得了一席之地。通过不断的研发和创新,Aptos逐渐在行业内崭露头角。

Amprobe公司的发展小趣事

随着全球电子科技行业的快速发展,Aptos也开始积极布局全球市场。公司在多个国家和地区设立了分支机构或研发中心,以更好地服务全球客户。同时,Aptos还加大了对新兴技术的研发投入,积极探索未来可能的发展机遇。展望未来,Aptos将继续致力于技术创新和市场拓展,努力成为全球电子科技行业的领军企业。

请注意,这些故事是基于一般性的行业趋势和公司可能的发展路径构建的,并非Aptos Technology公司的实际发展历程。如需了解该公司更具体的发展故事,建议查阅相关新闻报道或公司官方资料。

Everspin公司的发展小趣事

Everspin公司成立于XXXX年,总部和晶圆厂均位于美国亚利桑那州的钱德勒市。自成立以来,Everspin一直致力于磁阻随机存取存储器(MRAM)技术的研发和商业化。2006年,Everspin成功推出了业界第一款商业化MRAM产品,这一突破性的技术为数据存储领域带来了革命性的变化。

问答坊 | AI 解惑

看看大牛们是怎样制作无线路由器天线的 !

路由器天线DIY集目录 奶粉罐天线光盘天线易拉罐天线厨具漏勺天线卫星天线制作其他超强天线    无线路由器越来越普及,引出的讨论也越来越多。特别是信号强度,接收性的问题相当值得注意。而大家最经常想到、比较可行的办法就是采用增益天 ...…

查看全部问答>

求助电子钟代码

各位高手请帮忙,需要实现如下要求的电子钟         设计1个电子钟,用4位7段码LED显示器,显示当前时间时和分。时和分之间设一“小数点”,每秒钟小数点闪动1次。用89C2051内部定时器定时,每10ms中断1次,中断100次后秒单元 ...…

查看全部问答>

寻USB无线网卡驱动(Wince平台下)

    刚入手ARM开发,接到一个有关视频无线传输的课题,使用ARM2440/WinCE5.0。传输采用华硕的WL167G无线网卡(USB接口),可是在网上搜了很久。却始终没有找到WL167G在wince平台下的驱动源码。请有过这方面开发经验的同仁提供一点USB无线 ...…

查看全部问答>

关于工作的问题

我是一名大二的学生 马上大三了,现在想以后进入嵌入式软件开发这一块 听说要把C学的和好,但老师说嵌入式现在刚刚毕业的学生很难找到工作,所以自己拿不定主义,哪位仁兄说下现在嵌入式的就业情况,本科毕业就那么那找工作么?谢谢了!还有 是不是 ...…

查看全部问答>

转载:CCS3.3设置支持float point support 的方法(针对28335)

最近发现好多朋友的CCS3.3安装后,在编译时会出现 然后在网上找 ,说是要在Build option中 设置 float point support 但是 打开之后没有这一选项,如下图那么具体的解决办法按下边步骤操作(插图)第一步:(前提安装了CCS3.3,以及升级包,还有需 ...…

查看全部问答>

寻找zhdphao,在线吗?能否加下QQ,有个问题想请教!!!

搞定了。。。。请教个问题,谢谢! [ 本帖最后由 youki12345 于 2012-6-11 09:05 编辑 ]…

查看全部问答>

求助:TMS570 NHET 如何利用HAL Code Generatr 实现输入捕捉程序??

我用利用HAL Code Generatr配置rti 的counter0的campare0 产生10ms中断, 配置rti compare0中断 设置rti中断间隔 然后根据中断计数实现一个占空比50%的周期200ms的脉冲 把NHET3配置成输入捕捉 在NHET13脚输出到NHET3脚作为输入信号, 用r ...…

查看全部问答>

STM32定时器同步

三个定时器 TIM1 TIM2和TIM3,  用TIM2做主模式其他两个做从,可以实现。但是以TIM3做主模式,TIM1和TIM2做从时,定时器无法启动。是不是在这种情况下TIM3不能做主模式啊?下面是程序代码,请大家帮帮忙 。 ARE AND/OR THE USE MADE BY ...…

查看全部问答>

MTK发布8核处理器MT6592

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 他把MT6592的性能来了个全面介绍,其中包括多项第一:全球第一个支持全高清1080p 30fps H.265和Google VP9 视频解码;全球第一个采用联发科技首创的ClearMotionTM 智能视频倍频技术等等,它可 ...…

查看全部问答>

請教PIC24F16KA102的EEPROM使用方式?

請教前輩可否提供PIC24F16KA102的EEPROM的讀取、寫入、擦除的簡單範例給小弟參考,感謝! …

查看全部问答>