两单片机机串口通讯程序_百度文库_第1页
两单片机机串口通讯程序_百度文库_第2页
两单片机机串口通讯程序_百度文库_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、两单片机机串口通讯程序 日期:2011-07-23 来源:本站原创 作者:佚名 字体:大 中 小 (投递新闻 使用串行中断,接收数据并显示 ;=预定义= LED0 EQU 40H ;预定义数码管 LED1 EQU 41H ;预定义数码管 LED2 EQU 42H ;预定义数码管 LED3 EQU 43H ;预定义数码管 LED4 EQU 44H ;预定义数码管 LED5 EQU 45H ;预定义数码管 LED6 EQU 46H ;预定义数码管 LED7 EQU 47H ;预定义数码管 SDA BIT P0.1 ; 定义数据线引脚定义 SCL BIT P0.0 ; 定义时钟线引脚定义 ;- OR

2、G 0000H ;主程序入口 AJMP MAIN ;跳转到主程序 ORG 0100H ;主程序在ROM中存放位置 ;=主程序= MAIN: MOV LED0,#00H ;赋初值 MOV LED1,#00H MOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭 MOV LED3,#16 MOV LED4,#16 MOV LED5,#16 MOV LED6,#16 MOV LED7,#16 ;- ;MOV DPTR,#TABLE ; 赋显示代码首地址 MOV R1,#00H ; 给R1赋初值00H ACALL DISPLAY ; 调显示子程序 MOV SP, #30H ; 给堆栈指针

3、赋初值 ;- ; 使用定时器1,作为波特率发生器,设定波特率=9600, ; 定时器初值为:FAH ; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0, ; RB8=0,TI=0,RI=0 即0101 0000B ; 波特率加倍 ;- MOV TMOD,#20H ;设置定时器1,工作方式2 MOV TH1,#0FAh ;赋初值: FA MOV TL1,#0FAh ;赋初值: FA MOV SCON, #50h ;设置串行口控制寄存器 MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X SETB TR1 ;启动定时 ;*主程序结束* LP8: M

4、OV A,R1 ;将R1的数据装到A中 ;- MOV SBUF,A ;将A的数据送到缓冲区 JNB TI,$ ;等待数据发送完毕 CLR TI ;清发送中断标志 ;- INC R1 CJNE R1,#99,LP3 MOV R1,#00H LP3: ACALL SEPERATE ;调拆分程序 ACALL DISPLAY ;调显示子程序 ACALL DELAY_1S ;调延时子程序 AJMP LP8 ;=拆分程序= SEPERATE: ANL A,#0Fh ;与操作得到个位数据 MOV LED0,A ;个位送LED0 MOV A,R1 ANL A,#0F0H ;与操作得到十位数据 SWAP A M

5、OV LED1,A ;十位送LED1 RET ;=显示子程序= DISPLAY: MOV DPTR,#TABLE ; 赋显示代码首地址 MOV A,LED0 ;查表数据送A MOVC A,A+DPTR ;查表,得到显示代码 ACALL SHIFT ;调移位子程序 MOV A,LED1 MOVC A,A+DPTR ACALL SHIFT MOV A,LED2 MOVC A,A+DPTR ACALL SHIFT MOV A,LED3 MOVC A,A+DPTR ACALL SHIFT MOV A,LED4 MOVC A,A+DPTR ACALL SHIFT MOV A,LED5 MOVC A,A+

6、DPTR ACALL SHIFT MOV A,LED6 MOVC A,A+DPTR ACALL SHIFT MOV A,LED7 MOVC A,A+DPTR ACALL SHIFT RET ;-显示代码表- TABLE: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D3H,10H,90H ;0,1,2,3,4,5,6,7, 8,9, DB 50H,1CH,39H,16H,38H,78H, 0FFH,0FEH,0EFH ;10,11,12,13,14,15,灭,- ;=移位子程序= SHIFT: PUSH A ; 进栈暂存A值 MOV R0,#8 ; 循环8次 CLR C

7、 ;清进位标志 CLR SCL ;时钟线,先钳位为0 LP2: RLC A MOV SDA,C NOP NOP SETB SCL NOP NOP CLR SCL NOP NOP DJNZ R0,LP2 POP A ; 出栈恢复A值 RET ;=延时子程序= DELAY_1S: MOV R7,#0ffH LOOP7: MOV R6,#0ffH LOOP6: NOP NOP NOP NOP NOP NOP DJNZ R6,LOOP6 DJNZ R7,LOOP7 RET ;- END ;=两机串口通讯程序(从机= ; ; 功 能: 使用串行中断,接收数据并显示 ; 硬件环境: 自制单片机实验板 ;

8、软件环境: 伟福 V3.20 ; Create date: 2004_07_26 ; First Modify: 2004_07_26 ; second Modify: ; Last Modify: 2004_07_26 ; Author: Sujiande ; ;=预定义= LED0 EQU 40H ;预定义数码管 LED1 EQU 41H ;预定义数码管 LED2 EQU 42H ;预定义数码管 LED3 EQU 43H ;预定义数码管 LED4 EQU 44H ;预定义数码管 LED5 EQU 45H ;预定义数码管 LED6 EQU 46H ;预定义数码管 LED7 EQU 47H ;

9、预定义数码管 SDA BIT P0.1 ; 定义数据线引脚定义 SCL BIT P0.0 ; 定义时钟线引脚定义 ;- ORG 0000H ;主程序入口 AJMP MAIN ;跳转到主程序 ORG 0023H ;中断入口地址 AJMP S_INT ;跳转到中断程序 ORG 0100H ;主程序在ROM中存放位置 ;=主程序= MAIN: MOV LED0,#00H ;赋初值 MOV LED1,#00H MOV LED2,#16 ;赋初值为16, 数码管显示代码为: 灭 MOV LED3,#16 MOV LED4,#16 MOV LED5,#16 MOV LED6,#16 MOV LED7,#1

10、6 ;- MOV DPTR,#TABLE ; 赋显示代码首地址 ACALL DISPLAY ; 调显示子程序 MOV SP, #30H ; 给堆栈指针赋初值 ;- ; 使用定时器1,作为波特率发生器,设定波特率=9600, ; 定时器初值为:FAH ; 串行控制器设置:SM0=0,SM1=1,SM2=0,REN=1,TB8=0, ; RB8=0,TI=0,RI=0 即0101 0000B ; 波特率加倍 ;- MOV TMOD,#20H ;设置定时器1,工作方式2 MOV TH1,#0FAh ;赋初值: FA MOV TL1,#0FAh ;赋初值: FA MOV SCON, #50h ;设置串行口控制寄存器 MOV PCON, #80h ;设置电源控制寄存器, 让波特率加倍(2X ;- SETB EA ; 启动总中断 SETB ES ; 启动串行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论