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

📄 a5_4.asm

📁 单片机汇编例程学习,大量的汇编例程
💻 ASM
字号:
;///////////////////////////////////////////
;本程序源代码由单片机培训网提供.
;单片机培训网,让更多人学习单片机更容易.
;第一网址----www.mcuedu.com
;第二网址----http://51_train.nease.net
;创办人------刘永忠
;热线电话----(0755)27529998
;email-------aa815@163.com
;程序难易等级--------稍难
;使用串行中断发送数据
;///////////////////////////////////////////
          org          00h
          jmp          start
          org          23h                     ;uart中断起始地址
          jmp          uarti                   ;uart中断子程序
start:    mov          tmod,#00100000b         ;timet1工作在mode2
          anl          pcon,#01111111b         ;smod=0
          mov          th1,#0f3h               ;波特率2400
          setb         tr1                     ;启动timer1
          mov          scon,#01010000b         ;uart工作在mode1
          mov          ie,#10010000b           ;uaet中断使能
          mov          30h,#0ffh               ;指拨开关初始值
loop:     mov          a,p1                    ;读入指拨开关值
          cjne         a,30h,loop1             ;判断指拨开关有没有变化?
          jmp          loop
loop1:    mov          30h,a                   ;有变化则存入ram(30h)
loop2:    mov          sbuf,a                  ;送入sbuf发出
          clr          20h.0                   ;清除回应标志位20h.0=0
          clr          20h.1                   ;清除错误标志位20h.1=0
loop3:    jb           20h.1,loop2             ;检测有错否?(20h.1=1),有则重发
          jnb          20h.0,loop3             ;检测有回应否?(20h.0=1)
          jmp          loop
uarti:    push         acc                     ;将acc存入堆栈
          push         psw                     ;将psw存入堆栈
          setb         rs0                     ;设寄存器组1
          clr          rs1
          jbc          ri,loop4                ;是否接收中断?是则跳至loop4
          clr          ti                      ;是发送中断,则清除ti=0
          sjmp         return
loop4:    mov          a,sbuf                  ;将sbuf载入acc
          cjne         a,30h,loop5             ;将发送与的接收比较是否相同?
          setb         20h.0                   ;相同则设定应答标志位20h.0=1
          sjmp         return
loop5:    setb         20h.1                   ;不同则设错误标志位20h.1=1
return:   pop          psw                     ;取回psw值
          pop          acc                     ;取回acc值
          reti
          end

⌨️ 快捷键说明

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