资 源 简 介
4位八段数码管的十进制加计数仿真实验,程序采用汇编语言编写。此程序在仿真软件上与EDN-51实验板上均通过。仿真图中的数码管位驱动采用74HC04,如按EDN-51板上用想同的PNP三极管驱动在仿真软件上则无法正常显示。程序共分5块,STAR0为数据初始化,STAR2为计数子程序,STAR3为4位数码管动态显示子程序,STAR4为按键扫描子程序,STS00是延时子程序。由于EDN-51实验板上没装BCD译码器,所以编写程序比较烦琐。
程序如下:
ORG 0000H LJMP STAR0 ;转程序 SRAR0ORG 0200H ;程序地址 0200HSTAR0: CLR 00 ;位 00 清 0 MOV P1,#0FFH ;#0FFH-->P1 MOV P2,#0FH ;#0FH-->P2 MOV P0,#0FFH ;#0FFH-->P0 MOV 30H,#00H ;#00H-->30H MOV 31H,#00H ;#00H-->30H MOV 32H,#00H ;#00H-->30H MOV 33H,#00H ;#00H-->30H LJMP STAR3 ;转程序 SRAR3STAR2: MOV A,#0AH ;#0AH-->A INC 30H ;30H+1 CJNE A,30H,STJE ;30H 与 A 比较,不等转移 STJE MOV 30H,#00H ;#00H-->30H INC 31H ;31H+1 CJNE A,31H,STJE ;31H 与 A 比较,不等转移 STJE MOV 31H,#00H ;#00H-->31H INC 32H ;32H+1 CJNE A,32H,STJE ;32H 与 A 比较,不等转移 STJE MOV 32H,#00H ;#00H-->32H INC 33H ;33H+1 CJNE A,33H,STJE ;33H 与 A 比较,不等转移 STJE MOV 33H,#00H ;#00H-->33H MOV 32H,#00H ;#00H-->32H MOV 31H,#00H ;#00H-->31H MOV 30H,#00H ;#00H-->30HSTJE: RET ;子程序调用返回STAR3: MOV R0,#30H ;#30H-->R0 MOV R6,#0F7H ;#0F7H-->R6SMG0: MOV P1,#0FFH ;#0FFH-->P1 MOV A,R6 ;R6-->A MOV P1,A ;A-->P1 RR A ;A向右移一位 MOV R6,A ;A-->R6 MOV A,@R0 ;@R0-->A ADD A,#04H ;#04H-->A MOVC A,@A+PC ;A+PC--> MOV P0,A ;A-->P0 AJMP SMG1 ;转程序 SMG1SDATA: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H SMG1: LCALL STAR4 ;转子程序 SRAR4 LCALL STS00 ;转子程序 STS00 INC R0 ;R0+1 CJNE R6,#07FH,SMG0 ;#07FH 与 R6 比较,不等转移 SMG0 AJMP STAR3 ;转程序 SRAR3STAR4: JNB P2.0,ST1 ;P2.0=0 转 ST1 CLR 00 ;位 00 清 0 SJMP ST3 ;转ST3ST1: JNB 00,ST2 ;位 00=0 转 ST2 SJMP ST3 ;转 ST3ST2: LCALL STAR2 ;调子程序 STAR2 SETB 00 ;位 00 置 1ST3: RET ;子程序调用返回ORG 0100H ;地址 0100HSTS00: MOV 60H,#003H ;#003H-->60H (211)DE001: MOV 61H,#0FFH ;#0FFH-->61H (255)DE002: DJNZ 61H,DE002 ;61H 减 1 不等于 0 转 DE002 DJNZ 60H,DE001 ;60H 减 1 不等于 0 转 DE001 RET ;子程序调用返回 END ;结束
上次的程序共有293句,经小组成员建议,本人经几天的研究写了下面的这个程序,现在的程序用了63句,精简了230句。功能没有减。如谁有更简练的程序,请发上来,大家一起学习。
4位八段数码管的十进制加计数仿真实验(含电路图和仿真文件)