标题: 51单片机异步全双工通信汇编源码 [打印本页]

作者: 辰龙居士    时间: 2018-2-21 16:01
标题: 51单片机异步全双工通信汇编源码
单片机汇编语言源程序如下:
  1. org  0000h
  2.        ljmp reset
  3.        org  0003h
  4.        reti
  5.        org  000bh
  6.        reti
  7.        org  001bh
  8.        reti
  9.        org  0023h
  10.        ljmp tans_int     ;串口中断入口

  11. reset:       mov r0,#0  ;先进行系统准备(可以不要)
  12.        djnz r0,$

  13. init:  mov r1,#4   ;各个寄存器初始化
  14.        mov tmod,#0020h
  15.        mov th1,#0fdh
  16.        mov tl1,#0fdh
  17.        setb tr1          ;打开定时器中断
  18.        mov pcon,#00h

  19.        clr   sm0               ;设置工作方式1
  20.        setb sm1
  21.        setb ren    ;允许串行口接收数据
  22.        clr   ti
  23.        clr   ri
  24.        setb es           ;打开串行中断
  25.        setb ea           ;打开全局中断

  26. main:      
  27.        mov r0,#9
  28.        mov a,#0
  29. loop:            
  30.        mov dptr,#table        ;主函数主要实现串行发送
  31.        mov a,r0
  32.        movc      a,@a+dptr

  33.        mov sbuf,a
  34.        jb     ti,$          ;判断发送中断标志是否在中断中清零
  35.        lcall  delay       ;若清零,则延时
  36.        inc   dptr
  37.        dec         r0
  38.        cjne r0,#255,loop ;减到0之后会变成255
  39.        ljmp main

  40. tans_int:
  41.        push       acc
  42.        push       psw
  43.        jnb   ti,recive_clr  ;判断是否为发送中断
  44.        clr   ti
  45.        sjmp       int_end

  46. recive_clr:
  47.        jnb   ri,int_end        ;判断是否为接收中断
  48.        clr   ri   
  49.        mov a,sbuf                   ;若是,则显示出来
  50.        mov p2,a

  51. int_end:  
  52.        pop        psw
  53.        pop  acc
  54.        reti

  55. table:             ;共阳极数码管扫描码
  56.        db   0c0h,0f9h,0a4h,0b0h,99h
  57.        db   92h,82h,0f8h,80h,90h

  58. delay:   
  59.         mov    r3,#4              ;延时函数(延时大概5**255*255*2=500ms)
  60. l0:     mov r4,#0      
  61. l1:    mov r5,#0ffh
  62.          djnz r5,$
  63.          djnz r4,l1
  64.          djnz r3,l0
  65.       ret  

  66.        end

复制代码






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1