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

📄 84seg1.asm

📁 LED LCD常用小程序
💻 ASM
字号:
;ST套件数码管静态显示试验(学习查表程序)
;本实验的目的是让大家熟悉数码管,学习怎样应用查表程序,本程序的功能是要用PIC来实现一位
;数码管显示,程序复位后先由第一个数码管从0循环显示到9,再由第二个数码管从0显示到9,然后再
;由第一个数码管显示返复循环。程序中用一个计数器由0计数到9,同时将其在LED上显示出来。该例给出
;计数值与显示码的转换方法。
;PIC单片机学习网-----http://www.pic16.com
;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择;
;****************************************************************
  LIST P=16F84A,R=DEC    ;定义器件为16F84,默认数制为十进制
;-----------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC 
                                              ;没有代码保护
                                              ;看门狗关闭
                                              ;上电廷时器开启
                                              ;振荡器模式为XT
;---------------------
PC     EQU 02H            ;变量单元定义
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H

TRISA EQU 5H
TRISB EQU 6H
;-----------------------STATUS
RP0    EQU 5
;-----------------------
COUNTER EQU 10H
COUNT0  EQU 11H
COUNT1  EQU 12H
COUNT2  EQU 13H
TABADD  EQU 14H
;--------------------
     ORG 0000H
MAIN
     CLRF PORTA
     CLRF PORTB          ;初始IO口
     
     BSF STATUS,RP0      ;设置数据寄存器体1
     MOVLW 00000000B     ;设置RB、RA口全部为输出
     MOVWF TRISA 
     MOVWF TRISB  
     BCF STATUS,RP0      ;恢复数据寄存器体0
;----------------------
LOOPA
     MOVLW 0FFH          ;让数码所有划先熄灭
     MOVWF PORTB
     BSF PORTA,2
     BCF PORTA,1          ;让第一位数码管显示
LOOP1
     MOVLW TABLE          ;将转换表的首地址存入TABADD
     MOVWF TABADD
     CLRF COUNTER         ;计数器清0
     CLRW
LOOP2
     ADDWF TABADD,W        ;计数值(W)与转换表的起始地址相加
     CALL CONVERT          ;存入W后调用转换表子程序
     MOVWF PORTB           ;取出的七段显示码送RB口显示
     CALL DELAY
     INCF COUNTER,1        ;计数器加1递增(依次显示0,1,2,…9,。)
     MOVLW 11
     XORWF COUNTER,0       ;第一位显示完后转第二位显示
     BZ LOOPB
     MOVFW COUNTER
     GOTO LOOP2
;-------------------------
LOOPB
     MOVLW 0FFH            ;让数码所有划先熄灭
     MOVWF PORTB
     BSF PORTA,1
     BCF PORTA,2            ;让第二位数码管显示
LOOP3
     MOVLW TABLE
     MOVWF TABADD
     CLRF COUNTER
     CLRW
LOOP4
     ADDWF TABADD,W
     CALL CONVERT
     MOVWF PORTB
     CALL DELAY
     INCF COUNTER,1
     MOVLW 11
     XORWF COUNTER,0
     BZ LOOPA                  ;第二位显示完后转第一位循环显示
     MOVFW COUNTER
     GOTO LOOP4
;---------------------------------
DELAY	                                ;设置延时常数
       MOVLW    	3              	
       MOVWF    	COUNT0
L1	  		
       MOVLW    	255
       MOVWF    	COUNT1
L2	  	
       MOVLW    	255
       MOVWF    	COUNT2
L3	  		
       DECFSZ   	COUNT2,1         ;递减循环 
       GOTO	   	L3
       DECFSZ   	COUNT1,1
       GOTO	   	L2
       DECFSZ   	COUNT0,1
       GOTO	   	L1
       RETLW    	0
;-------------------- ----------------------------------
CONVERT   
            MOVWF    	PC                      ;将W寄存器内的7段显示码地址放入PC   	 
TABLE                                           ;PC执行新地址指令, 跳到相对的地址执行 
                                                ;RETLW指令,将七段显示码存入W后返回         	
	   RETLW    	081H 	   		;0 
	  RETLW    	0E7H 	   		;1                                
	  RETLW    	092H 	   		;2
	  RETLW    	0A2H 	   		;3
	  RETLW    	0E4H 	   		;4
	  RETLW    	0A8H 	   		;5
	  RETLW    	088H 	   		;6
	  RETLW    	0E3H 		   	;7
	  RETLW    	080H 	   		;8
	  RETLW    	0A0H 	   		;9
          RETLW       07FH                      ;.
;----- -----------------------------------------------
     END

⌨️ 快捷键说明

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