CUMT矿大——微机原理实验(汇编语言实现简单操作)

一、按键控制流水灯

详细说明:利用单片机、按键和LED小灯,构成一个LED灯控制电路,上电时,点亮一位LED,按下K1时,LED向左移一位,按下K2时,LED向右移一位。

ORG 0000H
AJMP START
ORG 0100H
START:	MOV	A,#0FEH
		MOV	P1,A    ;初始化
MAIN:	JNB P3.0,K1 ;按键按下跳转到k1
		JNB P3.1,K2 ;按键按下跳转到k2
		SJMP MAIN
K1:	LCALL DELAYMS   ;软件延时消抖
	JNB P3.0,K11
	SJMP MAIN
K11:RR A
	MOV	P1,A
	LCALL DELAY
	SJMP MAIN
K2:	LCALL DELAYMS
	JNB P3.1,K22
	SJMP MAIN
K22:RL A
	MOV	P1,A
	LCALL DELAY
SJMP MAIN
DELAYMS:MOV R3,#60
D0:MOV R4,#248
	DJNZ R4,$
	DJNZ R3,D0
	RET
DELAY:MOV R5,#20;延时0.2s
D1:MOV R6,#20
D2:MOV R7,#248
	DJNZ R7,$
	DJNZ R6,D2
	DJNZ R5,D1
	RET

二、按键控制数码管显示

详细说明:通过按键实现数码管显示0-255,Key1按下加1,Key2按下减1

ZXMADDR EQU   P1    ;字形码锁存器地址
COUNT   EQU   20H
        ORG   0000H
ST:     LJMP  START
        ORG   0100H
START:  MOV   COUNT,#0000H             
MAIN:   MOV   A,COUNT
        JNB   P3.2,K1       
    	JNB   P3.3,K2 
        MOV   B,#10
		DIV   AB
		MOV   36H,B
		MOV   B,#10
		DIV   AB
		MOV   37H,B
		MOV   38H,A
		
		MOV   DPTR,#TABLE
		MOV   A,36H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A
		SETB  P3.4
		CLR   P3.0		
		LCALL DELAY1MS
		
		MOV   A,37H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A		
		SETB  P3.0
		CLR   P3.1
		LCALL DELAY1MS
		
		MOV   A,38H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A	
		SETB  P3.1
		CLR   P3.4
		LCALL DELAY1MS
		
      	SJMP  MAIN
		
K1:     LCALL DELAYMS   
        JNB   P3.2,K11     
        SJMP  MAIN
K11:    INC   COUNT
        MOV   A,COUNT
        LCALL DELAY
        SJMP  MAIN
		
K2:     LCALL DELAYMS         
        JNB   P3.3,K22     
        SJMP  MAIN
K22:    DEC   COUNT 
        MOV   A,COUNT 
     	LCALL DELAY
 		SJMP  MAIN
		
DELAYMS:MOV     R3,#60     ;30MS
D0:    	MOV     R4,#248
        DJNZ    R4,$
        DJNZ    R3,D0
        RET
DELAY:	MOV 	R5,#20
D1:	    MOV 	R6,#20
D2:	    MOV 	R7,#248
	    DJNZ 	R7,$
	    DJNZ 	R6,D2
	    DJNZ 	R5,D1
	    RET
DELAY1MS:MOV    R3,#2     ;1MS
D3:    	MOV     R4,#248
        DJNZ    R4,$
        DJNZ    R3,D0
        RET							 		
		
TABLE:	DB   3FH         ;"0"   共阴极对应反码表
        DB   06H         ;"1"
        DB   5BH         ;"2"
        DB   4FH         ;"3"
        DB   66H         ;"4"
        DB   6DH         ;"5"
        DB   7DH         ;"6"
        DB   07H         ;"7"
        DB   7FH         ;"8"
        DB   6FH         ;"9"
	    END

三、外部中断控制数码管12归1

详细说明:按键申请外部中断,中断一次,数码管显示的数加1,用2位数码管动态显示计数,计数到12归0。

ZXMADDR EQU   P1    ;字形码锁存器地址
COUNT   EQU   20H
		ORG		0000H
		AJMP	START
		ORG		0003H					;外部中断0中断地址
		AJMP	EX0_INTERRUPT			;外部中断0响应函数
		ORG		0013H					;外部中断1中断地址
		AJMP	EX1_INTERRUPT			;外部中断1响应函数

ORG		0030H
START:
		MOV   COUNT,#0000H 
		ACALL	EX_INIT
MIANLOOP:
        MOV   R5,COUNT
        CJNE    R5,#13,LOOP1
        MOV   COUNT,#0000H	
LOOP1:  CJNE    R5,#255,LOOP
        MOV   COUNT,#12			

LOOP:   MOV   A,COUNT

        MOV   B,#10
		DIV   AB
		MOV   36H,B
		MOV   37H,A	
		
		MOV   DPTR,#TABLE
		MOV   A,36H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A
		SETB   P3.1
		CLR  P3.0
		LCALL DELAY1MS
		
		MOV   A,37H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A
		SETB   P3.0
		CLR  P3.1
		LCALL DELAY1MS	
		AJMP	MIANLOOP	

EX_INIT:					;EX INIT 外部中断0和外部中断1初始化并使能
		SETB	IT0
		SETB	IT1
		SETB	EX0
		SETB	EX1
		SETB	EA
		RET					
EX0_INTERRUPT:			;EX0_INTERRUPT 外部中断0的中断服务函数
		PUSH	ACC
		PUSH	PSW		
       INC   COUNT
       MOV   A,COUNT
		POP		PSW
		POP		ACC
		RETI				 ;EX1_INTERRUPT 外部中断1的中断服务函数                         
EX1_INTERRUPT:
        PUSH	ACC
		PUSH	PSW		
		DEC   COUNT 
        MOV   A,COUNT 
		POP		PSW
		POP		ACC
		RETI
                                          ;延时函数
DELAYMS:MOV     R3,#60     ;30MS延时程序
D0:    	MOV     R4,#248
        DJNZ    R4,$
        DJNZ    R3,D0
        RET
		
DELAY:	MOV 	R5,#20
D1:	    MOV 	R6,#20
D2:	    MOV 	R7,#248
	    DJNZ 	R7,$
	    DJNZ 	R6,D2
	    DJNZ 	R5,D1
	    RET
		
DELAY1MS:MOV    R3,#2     ;1MS延时程序
D3:    	MOV     R4,#248
        DJNZ    R4,$
        DJNZ    R3,D0
        RET			

TABLE: DB   3FH        ;"0"   共阴极对应反码表
        DB   06H        ;"1"
        DB   5BH        ;"2"
        DB   4FH        ;"3"
        DB   66H        ;"4"
        DB   6DH        ;"5"
        DB   7DH        ;"6"
        DB   07H        ;"7"
        DB   7FH        ;"8"
        DB   6FH        ;"9"	
	   END

四、定时器中断实现59归0

详细说明:利用定时器中断,实现计时,每秒计数加1,并显示在2位数码管上,计数到59归0; 

ZXMADDR EQU   P1     ;字形码锁存器地址
COUNT   EQU   20H	
	ORG 0000H
	LJMP MAIN
	ORG 000BH
	LJMP TIMER0
	ORG 0030H
MAIN: 
	MOV R0,#20       ;循环20次
	MOV COUNT,#0000H 
	MOV TMOD,#01H    ;工作方式1
	MOV TH0,#3CH     ;计数器初值
	MOV TL0,#0B0H
	SETB ET0         ;开启定时/计数器(T0)中断允许位
	SETB EA		     ;开启总中断
	SETB TR0         ;开启定时/计数器(T0)运行控制位,为1时启动定时计数
LOOP:
        MOV   R5,COUNT
        CJNE    R5,#60,LOOP1
        MOV   COUNT,#0000H	
LOOP1:	MOV   A,COUNT
		MOV   B,#10
		DIV   AB
		MOV   36H,B
		MOV   37H,A
			
		MOV   DPTR,#TABLE
		MOV   A,36H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A
		SETB   P3.1
		CLR  P3.0
		LCALL DELAY1MS
			
		MOV   A,37H
		MOVC  A,@A+DPTR
		MOV   ZXMADDR,A
		SETB   P3.0
		CLR  P3.1
		LCALL DELAY1MS
				
		AJMP  LOOP
	
TIMER0:
		MOV TH0,#3CH   ;重装初值
		MOV TL0,#0B0H
		DJNZ R0,EXIT
		MOV R0,#20
		INC   COUNT
		MOV   A,COUNT	
EXIT: 
        RETI	
                           ;延时函数
DELAYMS:MOV     R3,#60     ;30MS延时程序
D0:    	MOV     R4,#248
        DJNZ    R4,$
        DJNZ    R3,D0
        RET
		
DELAY:	MOV 	R5,#20
D1:	    MOV 	R6,#20
D2:	    MOV 	R7,#248
	    DJNZ 	R7,$
	    DJNZ 	R6,D2
	    DJNZ 	R5,D1
	    RET

DELAY1MS:MOV    R3,#2     ;1MS延时程序
D3:    	MOV     R4,#248
        DJNZ    R4,$
        DJNZ    R3,D0
        RET			

TABLE:	DB   3FH         ;"0"   共阴极对应反码表
        DB   06H         ;"1"
        DB   5BH         ;"2"
        DB   4FH         ;"3"
        DB   66H         ;"4"
        DB   6DH         ;"5"
        DB   7DH         ;"6"
        DB   07H         ;"7"
        DB   7FH         ;"8"
        DB   6FH         ;"9"
			
	    END
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值