⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chuanhuangchenxu.c

📁 这是单片机串行通讯应用源程序
💻 C
字号:
//单片机串行能讯应用源程序

   许多数据采集系统都需要用到串口,串口的特点是:占用的硬件投资少,只需要很少的信号线,可以同步传输,也可以异步传送。传输数据的格式、速率可以变化。但是抗干扰性能不好,传输距离不够。本例程主要通过实验,演示串口通信的各种设置,上位机及其单片机的软件编程方法,数据的采集与处理等。也可以作为串口调试软件用。是一个非常实用的实验。能够方便地进行代码移植。  
 

       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
 
  

			i=resetDS18B20();
			i=readTempDS18B20();
	}
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -