TRM0 EQU 1
FLAG EQU 10
COUNT EQU 11
COUNT1 EQU 12
COUNT2 EQU 13
COUNT3 EQU 14
POINTER EQU 15
ORG 00H
GOTO MAIN
MAIN:
MOVLW 87H ;设定时钟参数
OPTION
MOVLW 08H ;输出端口设定
TRIS 6
CLRF POINTER
CLRF TRM0
CLRF COUNT1
CLRF COUNT2
MOVLW 250
MOVWF COUNT1
MOVWF COUNT2
MOVLW 8
MOVWF COUNT3
START:
MOVLW TABLE
ADDWF POINTER,0
INCF POINTER,1
CALL AA
MOVWF 6 ;返回数据输出到GP端口
CLRF COUNT1
CLRF COUNT2
MOVLW 250 ;设定时间长度
MOVWF COUNT1
MOVWF COUNT2
MOVLW 8
MOVWF COUNT3
;延迟时间1m秒 250*4ms=1s
DELAY:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ COUNT1,1
GOTO DELAY ;延迟时间250*16=4m秒
MOVLW 250
MOVWF COUNT1
DECFSZ COUNT2,1
GOTO DELAY
MOVLW 250
MOVWF COUNT2
DECFSZ COUNT3,1
GOTO DELAY
MOVLW 7
MOVWF COUNT
SUBWF POINTER,0
BTFSS STATUS,Z
GOTO START
GOTO MAIN
AA: MOVWF 2
TABLE:
RETLW 18H
RETLW 09H
RETLW 0AH
RETLW 0BH
RETLW 19H
RETLW 1AH
RETLW 1BH
ORG 1FFH
MOVWF OSCCAL
END
以上程序是用于12c508单片机,要求结果是运行以后,GP0,GP1,GP4三个灯先三个单独亮,然后两个一起亮,最后是三个一起亮,不过我运行了以后,灯一个都没亮,研究了许久,没结果,盼望有高手指点迷津,谢谢…… |