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

📄 pcf8574led.#3

📁 C8051F.rar
💻 #3
字号:
;实验程序A:PCF8574LED。ASM  PCF8574控制6位数码显示
;显示子程序 : 在六个数码管上显示数据。数值在71H ~ 76H之中。不用键盘。
 SLA1W          EQU   70H      ;PCF8574 A片写的节点地址 (可选地址开关:000H)
 SLA1R          EQU   71H      ;PCF8574 A片读的节点地址 
 SLA2W          EQU   72H      ;PCF8574 B片写的节点地址 (可选地址开关:001H )    
 SLA2R          EQU   73H      ;PCF8574 B片读的节点地址 
 SLA3W          EQU   76H      ;PCF8574 C片写的节点地址 (可选地址开关:011H)
 SLA3R          EQU   77H      ;PCF8574 C片读的节点地址 
 SLA            EQU   60H
SLAW            EQU   62H
 SLAR           EQU   63H 
NUMBYT          EQU   61H     ;被传送的字节数存放单元
 MTD            EQU   20H     ;发送数据缓冲区首地址
 MRD            EQU   30H     ;接收字节缓冲区首地址          
 VSCL           EQU   P0.1    ;模拟I2C总线时钟线
 VSDA           EQU   P0.0    ;模拟I2C总线数据线
        ORG        00H
        AJMP       START
        ORG        0030H
START:  MOV        SP,#7H   ;堆栈地址
        MOV    WDTCN,#0DEH  ;禁止看门狗定时器
        MOV    WDTCN,#0ADH;
	   MOV     XBR2,#40H  ;C8051F交叉开关使能
        ACALL   SEND        ;传送子程序,在RAM71H-76H中分别存入1,2,3,4,5,6
DD:	   ACALL	   DISP       ; 显示六位数字:'1', '2', '3', '4,' '5', '6'
	   AJMP       DD
       ;显示子程序:显示固定存储区(即CPU RAM 71H~76H)中存放的数值
DISP:  MOV	   R2,#01H            ; 字位码在R2中,(R2)= #1,#2,#4,#8
       MOV	   R5,#6              ;显示6个数。
       MOV         R0,#71H          ;71H为数据区首地址
DSP1:  MOV         A,R2
       ACALL       WRITEB           ;B口输出作为六位数码管的位选
       MOV	    A,@R0              ;将要显示的数值送入A中
DSP2:  MOV	    DPTR,#BCD          ;查表
       MOVC	    A,@A+DPTR  ;查表,查出要显示的数值的字形码           
       ACALL       WRITEC             ;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,#01                   
        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
SS:     MOV   	@R0,A
        INC    	A
        INC    	R0
        DJNZ   	R7,SS
        RET
WRITEB:  MOV    SLAW,#SLA2W      ;将数据送器件B
         MOV    SLAR,#SLA2R
        ACALL   WRBC   
         RET
WRITEC:  MOV    SLAW,#SLA3W     ;将数据送器件C
         MOV    SLAR,#SLA3R
 ACALL   WRBC   
         RET             
WRBC:    MOV    MTD,A
         MOV    SLA,SLAW
         MOV    NUMBYT,#1
         LCALL  WRNBYT
         RET           
         END

⌨️ 快捷键说明

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