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

📄 232.asm

📁 01单片机网站51单片机开发板全部配套程序
💻 ASM
字号:
;程序名:  MCS51实验板配套程序-232通讯及显示
;功能:    由PC发hex 1字节,mcu收到后返回该字节,并在实验板上显示
;          本实验为中断方式
;          请将实验板上S6打到11.0592MHz挡
;电路介绍:显示由一片74164驱动4位共阴数码管
;          DsDat-p1.4;DsClk-p1.5;Gw-p1.0;Sw-p1.1;Bw-p1.2;Qw-p1.3
;          通讯用中断方式
;www.01mcu.net www.01mcu.com 2003/4/20编写
;*******************************************************************
;定义
XSDAT BIT P1.4    ;定义部分,意思是:程序中管脚名用前面字符替代
XSCLK BIT P1.5
GW    BIT P1.0
SW    BIT P1.1
BW    BIT P1.2
QW    BIT P1.3
SJGW  EQU 30H     ;数据存储器
SJSW  EQU 31H
SJBW  EQU 32H
SJQW  EQU 33H
TEMP  EQU 20H
;**********************************************************

ORG 0000H
    LJMP INIT
ORG 0023H
    LJMP COMM      ;串口中断
;初始化//串口收发均用查询方式
INIT:       MOV P0,#0FFH
            MOV P1,#0
            MOV SP,#40H
            MOV A,#0             ;清内存
            MOV R0,#50H
INILO:      MOV @R0,A
            DJNZ R0,INILO   
            MOV TMOD,#20H      ;
            MOV TH1,#0FDH      ;FAH=9600BPS串口速度
            MOV TL1,#0FDH
            MOV PCON,#00H      ;不加速
            MOV SCON,#50H
            SETB TR1
            SETB ES
            SETB EA
            LCALL DISPLAY
;****主程序***************************************************
MAIN:       MOV A,TEMP
            ANL A,#0FH
            MOV SJGW,A
            MOV A,TEMP
            ANL A,#0F0H
            SWAP A
            MOV SJSW,A
            LCALL DISPLAY
            LJMP MAIN

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;*****接收/发送 串口数据**用中断,返回************************
COMM: 
;            JNB RI,$
            CLR EA
            PUSH ACC
            CLR RI
            MOV A,SBUF
            MOV 20H,A      ;先保存
            MOV SBUF,A     ;再转发
            JNB TI,$
            CLR TI
            SETB EA
            POP ACC
            RETI

;************************************************************************
;74164显示程序,使用RS1=1,RS0=0的1区
;---------------------------------------------------------
DISPLAY:  PUSH ACC             ;保存ACC
          PUSH PSW
          CLR RS1
          SETB RS0             ;使用第一区工作寄存器 
          MOV DPTR,#XSTAB    
          MOV A,SJGW           ;取得数据
          MOVC A,@A+DPTR       ;提取字模
          ACALL DSOUT          ;调用送出子程序
         CLR GW
          ACALL DS1MS          ;调用显示1MS延时程序
         SETB GW
          MOV A,SJSW
          MOVC A,@A+DPTR        ;提取字模
          ACALL DSOUT          ;送出
         CLR SW
          ACALL DS1MS          ;显示1MS  
         SETB SW        
          MOV A,SJBW
          MOVC A,@A+DPTR        ;提取字模
          ACALL DSOUT          ;送出
         CLR BW
          ACALL DS1MS          ;显示1MS 
         SETB BW 
          MOV A,SJQW
          MOVC A,@A+DPTR        ;提取字模
          ACALL DSOUT          ;送出
         CLR QW
          ACALL DS1MS          ;显示1MS
         SETB QW
          POP PSW
          POP ACC              ;出栈
          RET                  ;返回调用
  ;---送出循环----------
DSOUT:    
          MOV R0,#8            ;传送一个字节8位
DSLOOP:   RLC A                ;左移
          MOV XSDAT,C          ;送数据到数据口
          SETB XSCLK           ;送一时钟
          CLR XSCLK
          DJNZ R0,DSLOOP
          RET         
   ;---显示延时---------- 
DS1MS:    MOV R1,#5
DS1LO:    MOV R2,#100
          DJNZ R2,$
          DJNZ R1,DS1LO
          RET                  ;延时返回
;************************************************************************
;显示字表(共阴)
XSTAB:    DB  3FH,06H,5BH,4FH    ;"0","1","2","3"
          DB  66H,6DH,7DH,07H    ;"4","5","6","7"
          DB  7FH,6FH,77H,7CH    ;"8","9","A","B" 
          DB  39H,5EH,79H,71H    ;"C","D","E","F"


END           

⌨️ 快捷键说明

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