serial.asm

来自「基于PROTEUS的仿真 含带源代码 C语言编程」· 汇编 代码 · 共 45 行

ASM
45
字号
;每个串行中断发送一次30H~32H中的十六进制数,1sm延时保证同步
ORG  0000H
LJMP START
ORG 0023H
LJMP SINT
ORG 30H
START:MOV 30H,#0FFH;向存储区内送数
      MOV 31H,#0FFH
      MOV 32H,#0FFH
      MOV TMOD,#20H  ;定时器1初始化
      MOV TH1,#0F3H  ;设置波特率为1200MHz,6MHz的晶振
      MOV TL1,#0F3H  ;
      MOV SCON,#50H  ;串口初始化为可以接收
      MOV PCON,#00H  ;波特率不倍增
      SETB TR1   ;启动定时器
      SETB EA   ;开中断
      SETB ES   ;允许串口中断
      MOV R0,#30H;定义数据存储区首地址和个数
      MOV R3,#3

MAIN:NOP    ;主程序主要是等中断
     NOP
     SJMP MAIN

SINT:CLR EA        ;关闭系统中断          
     CLR RI        ;清除中断标志位 
SENT:MOV A,@R0
     MOV SBUF,A
WAIT:JNB TI,WAIT
     LCALL DELAY
     CLR TI
     INC R0
     DJNZ R3,SENT
     MOV R0,#30H
     MOV R3,#3
NEXT:CLR RI          ;清除中断标志位 
     SETB EA         ;打开系统中断 
     RETI            ;中断程序返回

DELAY:MOV R6,#02H
AGAIN:MOV R7,#0F8H
DELAY1:DJNZ R7,DELAY1
       DJNZ R6,AGAIN
       RET

⌨️ 快捷键说明

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