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

📄 uartsend.a

📁 基于单片机的汇编程序
💻 A
字号:
ORG 0000H
LJMP MAIN;上电,转向主程序
ORG 0023H;串行口的中断入口地址
;LJMP SERVE1;转向中断服务程序
ORG 0030H;主程序

MAIN:

MOV TMOD,#20H;设T1工作方式2
MOV TH1,#0F3H;赋记数初值
MOV TL1,#0F3H;赋记数值
SETB TR1;启动定时器T1
MOV PCON,#80H;设SMOD=1
MOV SCON,#0D0H;置串行口方式3,允许接收

AJMP START
START:
;MOV DPTR,#4000H;置数据块首址
MOV DPTR,#TITLE;我们显示自己的汉字------------


;MOV R0,#80H;置发送字节数初值
;SETB ES;允许串行口中断
;SETB EA;CPU开中断

LOOP_SEND:
CLR A
;MOVX A,@DPTR;取第一个数据发送
MOVC A,@A+DPTR;我们取第一个数据发送
CJNE A,#'$',SEND_A;如果不是最后一个数据我们就发送这个数据,否则我们就结束程序.
;SJMP $;如果发送数据结束,我们就无限循环等待,免得出错.
LCALL DL10MS;调用延时子程序,好让上位机有反应的时间,来接受单片机的数据。

SJMP MAIN;我们让它循环发送数据,便于我们实验---------------------
MOV C,P;
MOV TB8,C;奇偶标志送TB8

SEND_A:
MOV SBUF,A;发送数据
JNB TI,$;
CLR TI
LCALL DL10MS;我们每发完一个数据就延时,好让上位机接收正常,免得出现乱码
INC DPTR;指向后一个数据.
LJMP LOOP_SEND;
;SJMP $;等待中断
;************;
;0.5毫秒延时子程序,执行一次时间为513微秒
DL512:MOV       R2,#0FFH
LOOP1: DJNZ     R2,LOOP1
       RET
;
;10毫秒延时子程序(调用10次0.5毫秒延时子程序)
DL10MS:MOV      R3,#64H
LOOP2: LCALL    DL512
       DJNZ     R3,LOOP2
       RET
TITLE:DB "d",'o'
END

⌨️ 快捷键说明

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