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

📄 wdisp6.#3

📁 c8051f020 的扩展8255驱动数码管显示 同样是keilc啊
💻 #3
字号:
;参考程序A:;WDISP6.ASM
;程序功能:在六个数码管上显示6位数据。数值在CPU  RAM  的71H ~ 76H之中。
$INCLUDE (C8051F020.inc)
ORG        00H
AJMP    START
ORG        0030H
START: ACALL  PORT_Init ;I/O口初始化
ACALL  INT8255    ;8255初始化
ACALL   SEND  ;传送子程序,在RAM 71H~76H中分别存入六位数(1~6)
SS:	   ACALL	DISP               ; 显示子程序
AJMP    SS
 ;显示子程序
DISP:  MOV	R2,#01H            ; 字位码在R2中
       MOV  R5,#6              ;显示6个数
       MOV  R0,#71H            ;71H为数据区首地址
DSP1:  MOV 	DPTR,#8001H        ;#8001H为输出口PB的地址
       MOV  A,R2
       MOVX @DPTR,A		   ;PB口输出字位码
       MOV  A,@R0              ;将要显示的数值送入A中
DSP2:  MOV	DPTR,#BCD    ;查表
       MOVC  A,@A+DPTR	   ;查表,查出要显示的数值的字形码
       MOV   DPTR,#8002H	   ;#8002H为输出口PC的地址
       MOVX   @DPTR,A		   ;C口输出字形码
       ACALL   DEL0               ;延时
       MOV    A,R2
       RL     A
       MOV   R2,A
       INC   R0
       DJNZ     R5, DSP1
       RET
BCD:    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
DB   73H,3EH,31H,6EH                       ;P,U,Z,Y
DB   40H,00H	                             ;- ,灭
DEL0:   MOV  R6,#00H            ;延时子程序
TM:     MOV  R7,#00H
        DJNZ  R7,$
        DJNZ  R6,TM
RET
;传送子程序, 在RAM  71H~76H中分别存入六位数字:'1', '2', '3', '4,' '5', '6'
SEND:   MOV   R7,#6     
MOV   R0,#71H
MOV   A,#1
SS1:     MOV   @R0,A
        INC    A
        INC    R0
        DJNZ   R7,SS1
        RET
;初始化8255
INT8255:MOV A,#80H      ; 设置PC口,PB口为输出,PA口为输入
MOV DPTR,#8003H     ;#8003H为8255的控制寄存器地址
MOVX  @DPTR,A
RET
PORT_Init :
   MOV EMI0CF ,#2cH;		/*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/
   MOV EMI0TC ,#6dH;		/*地址建立/保持时间占1个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/
   MOV P74OUT,#3fH;         /*P7为漏极开路,P4,P5,P6为推拉方式*/
   RET
    END

⌨️ 快捷键说明

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