; * 文 件 名: lab4.ASM *
; * 修改日期: 2008.10.24 *
; * 描 述: 2008級電子信息工程 I/O口 實驗程序 *
; * 功能描述: 采用 TMR0 實現的隊列燈顯示 *
;* 版 本: v8.33 *
; ***************************************************************
LIST P=16f877
#INCLUDE <p16f877.inc>
gCount EQU 20H ; 定義計數器
cTMR0B EQU 6 ; 定義 定時器/計數器0 的預值
ORG 0
nop
GOTO start
ORG 50
start BSF STATUS,RP0 ; 選中 Bank1
MOVLW 00H
MOVWF TRISD ; 設置 PortD 的輸入輸出方向: 輸出
MOVLW 07h ; PS2~0=111,其余各位為 0
MOVWF OPTION_REG ; 設置 TMR0 的分頻比為1:256 PSA=0:用於 TMR0 T0CS=0:內部指令 T0SE=0
BCF STATUS,RP0 ; 選中 Bank0
CLRF gCount ; 初始化 計數器為 0
LOOP MOVF gCount,0 ; (w)=(gCount)
CALL Read ; 讀取對應的 值
MOVWF PORTD ; 送到 D 端口輸出顯示
INCF gCount,1 ; 計數器加壹
MOVLW 0FH
ANDWF gCount,1 ; 計數器和 0fh 與操作,冗余設計
CALL Delay
CALL Delay ; 調用 采用 TMR0 實現的延時模塊
CALL Delay
CALL Delay
CALL Delay
CALL Delay
CALL Delay ; 調用 采用 TMR0 實現的延時模塊
CALL Delay
CALL Delay
CALL Delay
CALL Delay
CALL Delay ; 調用 采用 TMR0 實現的延時模塊
CALL Delay
CALL Delay
CALL Delay
GOTO LOOP ; 循環
; 延時模塊
; 使用和影響資源: 無
; 延時時間長度取決於常量 cTMR0
Delay BCF INTCON,2
MOVLW cTMR0B
MOVWF TMR0
BSF STATUS,RP0
MOVLW 07h ; PS2~0=111,其余各位為 0
MOVWF OPTION_REG ; 設置 TMR0 的分頻比為1:256 PSA=0:用於 TMR0 T0CS=0:內部指令 T0SE=0
BCF STATUS,RP0
Loop1 BTFSS INTCON,2
GOTO Loop1
return
; 查表程序
; 入口參數: W 索引值
; 出口參數: W 返回值
Read ANDLW B'00001111' ; 冗余設計,防止 (W)>0FH
ADDWF PCL,1
RETLW B'00000001'
RETLW B'00000011'
RETLW B'00000111'
RETLW B'00001111'
RETLW B'00011111'
RETLW B'00111111'
RETLW B'01111111'
RETLW B'11111111'
RETLW B'11111110'
RETLW B'11111100'
RETLW B'11111000'
RETLW B'11110000'
RETLW B'11100000'
RETLW B'11000000'
RETLW B'10000000'
RETLW B'00000000'
END
這個是ASM的文件,需要編程軟件打開。 妳說的那些,可能是運行了程序後生成的文件。是那個程序的輔助文件,是打不開的。