热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PIC单片机数码管(流水灯)代码

 #INCLUDEp16f886.inc __config_CONFIG1,_INTOSCIO&_

 #INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

OFFSET RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

CODE

INIT

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT1:

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BCF PORTC,0

RETURN

SELECT2:

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BCF PORTC,1

RETURN

SELECT3:

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BCF PORTC,2

RETURN

SELECT4:

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BCF PORTC,3

RETURN

WRITE:

BANKSEL PORTA

CLRF PORTA

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

XORWF B'00000000',W

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'00111111';0;;;;;;;;;;;;3F

RETLW B'00000110';1

RETLW B'01011011';2;;;;;;;;;;;;5B

RETLW B'01001111';3

RETLW B'01100110';4

RETLW B'01101101';5

RETLW B'01111101';6

RETLW B'00000111';7

RETLW B'01111111';8

RETLW B'01101111';9

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

CALL SELECT1

BANKSEL OFFSET

MOVLW D'3'

MOVWF OFFSET

CALL WRITE

;;;;;;;;;;;;;;;;;;;;;;;;;;

CALL SELECT2

BANKSEL OFFSET

MOVLW D'1'

MOVWF OFFSET

CALL WRITE

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CALL SELECT3

BANKSEL OFFSET

MOVLW D'1'

MOVWF OFFSET

CALL WRITE

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CALL SELECT4

BANKSEL OFFSET

MOVLW D'4'

MOVWF OFFSET

CALL WRITE

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示2003

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

NUM RES 1

CNUM RES 1

COFFSET RES 1

LP0 RES 1

LP1 RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

;ISR CODE 0x04

;MOVWF W_TMP

;SWAPF STATUS,W

;MOVWF S_TMP

; NOP

;SWAPF S_TMP,W

;MOVWF STATUS

;SWAPF W_TMP,F

;SWAPF W_TMP,W

;RETFIE

CODE

INIT

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL OFFSET

CLRF OFFSET

BANKSEL OSCCON

MOVLW B'00000011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为310KHz,内部振荡器

;BANKSEL NUM

;CLRF NUM

BANKSEL COFFSET

MOVLW D'10'

MOVWF COFFSET

BANKSEL CNUM

MOVLW D'4'

MOVWF CNUM

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

;ORG 0x9FD

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

;ORG 0x9FD

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'00000110';1

RETLW B'01011011';2

RETLW B'01001111';3

RETLW B'01100110';4

RETLW B'01101101';5

RETLW B'01111101';6

RETLW B'00000111';7

RETLW B'01111111';8

RETLW B'01101111';9

RETLW B'00111111';0

DELAY: 

MOVLW 01FH

MOVWF LP0

L0 MOVLW 01FH

MOVWF LP1

L1 DECFSZ LP1,F

GOTO L1

DECFSZ LP0,F

GOTO L0

RETURN

SETCNUM:

MOVLW D'4'

MOVWF CNUM

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

;ORG 0x80

BANKSEL ANSEL

CLRF ANSEL

LOOP

MOVF COFFSET,W

MOVWF OFFSET

MOVF CNUM,W

MOVWF NUM

CALL SELECT

CALL WRITE

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

DECF CNUM

BTFSC STATUS,Z

CALL SETCNUM

CALL DELAY

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9876543210单数字滚动显示

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

COFFSET RES 1

NUM RES 1

CNUM RES 1

PA RES 1

CNT RES 1

LP0 RES 1

LP1 RES 1

ISBLACK RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

ISR CODE 0x04;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVWF W_TMP

SWAPF STATUS,W

MOVWF S_TMP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

COMF ISBLACK

BTFSS ISBLACK,0

CALL DECRESE_COFFSET

BTFSC ISBLACK,0

CALL BLACK

BANKSEL TMR0

CLRF TMR0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SWAPF S_TMP,W

MOVWF STATUS

SWAPF W_TMP,F

SWAPF W_TMP,W

RETFIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CODE

INIT

BANKSEL TMR0

CLRF TMR0

BANKSEL OPTION_REG

MOVLW B'00000111'

MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0设置为256分频

BANKSEL INTCON

BSF INTCON,GIE

BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;总中断使能,TMR0中断使能

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

BANKSEL OSCCON

MOVLW B'00010011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为125KHz,内部振荡器

BANKSEL COFFSET

MOVLW D'10'

MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10个数字

BANKSEL CNUM

MOVLW D'1'

MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4个数码管

MOVF COFFSET,W

MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暂时存储COFFSET

MOVLW D'4'

MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;计数四次

CLRF ISBLACK

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTA

CLRF PORTA

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'01101111';9

RETLW B'01111111';8

RETLW B'00000111';7

RETLW B'01111101';6

RETLW B'01101101';5

RETLW B'01100110';4

RETLW B'01001111';3

RETLW B'01011011';2

RETLW B'00000110';1

RETLW B'00111111';0

SETORIGIN:

MOVLW D'1'

MOVWF CNUM

MOVLW D'4'

MOVWF CNT

MOVF COFFSET,W

MOVWF PA

RETURN

SETPA:

MOVLW D'10'

MOVWF PA

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

DELAY: 

MOVLW 03FH

MOVWF LP0

L0 MOVLW 03FH

MOVWF LP1

L1 DECFSZ LP1,F

GOTO L1

DECFSZ LP0,F

GOTO L0

RETURN

DECRESE_COFFSET:

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

RETURN

BLACK:

BANKSEL PORTA

CLRF PORTA

CALL DELAY

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

MOVF CNUM,W

MOVWF NUM;数码管

MOVF PA,W

MOVWF OFFSET;图案

CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;数码管

CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;图案

DECF PA

BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;

CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

INCF CNUM

DECF CNT

BTFSC STATUS,Z

CALL SETORIGIN

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示0-9,闪烁一次

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

COFFSET RES 1

NUM RES 1

CNUM RES 1

PA RES 1

CNT RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

ISR CODE 0x04

MOVWF W_TMP

SWAPF STATUS,W

MOVWF S_TMP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以上保存现场

PB_INT

BTFSC INTCON,RBIF

CALL PORTB_INT

TM0_INT

BTFSC INTCON,T0IF

CALL TMR0_INT

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下恢复现场

SWAPF S_TMP,W

MOVWF STATUS

SWAPF W_TMP,F

SWAPF W_TMP,W

RETFIE

CODE

INIT

;;;;;;;;;;;;;;;;;;;;;;中断设置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL INTCON

BSF INTCON,GIE

BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;总中断使能,TMR0中断使能

BSF INTCON,RBIE;;;;;;;;;;;;;;;;;;;;;;PORTB电平变化中断使能

BANKSEL TMR0

CLRF TMR0

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

BANKSEL OPTION_REG

MOVLW B'00000111'

MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0设置为256分频

BANKSEL PORTB

BCF PORTB,4

BANKSEL INTCON

BCF INTCON,RBIF;;;;;;;;;;;;;;;;;;;;;;;;;;PORTB中断标志清除

;;;;;;;;;;;;;;;;;;;;振荡器设置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL OSCCON

MOVLW B'00010011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为125KHz,内部振荡器

;;;;;;;;;;;;;;;;;;;;;;;;;;输入输出设置;;;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

BANKSEL TRISB

MOVLW B'00100000'

MOVWF TRISB

BANKSEL IOCB

MOVLW B'00100000'

MOVWF IOCB

BANKSEL PORTB

CLRF PORTB

BANKSEL WPUB

MOVLW B'00100000'

MOVWF WPUB

;;;;;;;;;;;;;;;;;;其他初始化;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL COFFSET

MOVLW D'10'

MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10个数字

BANKSEL CNUM

MOVLW D'1'

MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4个数码管

MOVF COFFSET,W

MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暂时存储COFFSET

MOVLW D'4'

MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;计数四次

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTA

CLRF PORTA

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'01101111';9

RETLW B'01111111';8

RETLW B'00000111';7

RETLW B'01111101';6

RETLW B'01101101';5

RETLW B'01100110';4

RETLW B'01001111';3

RETLW B'01011011';2

RETLW B'00000110';1

RETLW B'00111111';0

SETORIGIN:

MOVLW D'1'

MOVWF CNUM

MOVLW D'4'

MOVWF CNT

MOVF COFFSET,W

MOVWF PA

RETURN

SETPA:

MOVLW D'10'

MOVWF PA

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

TMR0_INT:

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COFFSET减一

BANKSEL TMR0

CLRF TMR0

RETURN

PORTB_INT:

BANKSEL PORTB

BCF PORTB,4

BANKSEL INTCON

BCF INTCON,RBIF;;;;;;;;;;;;;;;;;;;;;;;;;;PORTB中断标志清除

MOVLW D'10'

MOVWF COFFSET

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

BANKSEL TMR0

CLRF TMR0

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

MOVF CNUM,W

MOVWF NUM;数码管

MOVF PA,W

MOVWF OFFSET;图案

CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;数码管

CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;图案

DECF PA

BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;

CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

INCF CNUM

DECF CNT

BTFSC STATUS,Z

CALL SETORIGIN

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;含电平触发中断的数码管滚动显示-0-9

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

COFFSET RES 1

NUM RES 1

CNUM RES 1

PA RES 1

CNT RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

ISR CODE 0x04

MOVWF W_TMP

SWAPF STATUS,W

MOVWF S_TMP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COFFSET减一

BANKSEL TMR0

CLRF TMR0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SWAPF S_TMP,W

MOVWF STATUS

SWAPF W_TMP,F

SWAPF W_TMP,W

RETFIE

CODE

INIT

BANKSEL TMR0

CLRF TMR0

BANKSEL OPTION_REG

MOVLW B'00000111'

MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0设置为256分频

BANKSEL INTCON

BSF INTCON,GIE

BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;总中断使能,TMR0中断使能

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

BANKSEL OSCCON

MOVLW B'00010011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为125KHz,内部振荡器

BANKSEL COFFSET

MOVLW D'10'

MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10个数字

BANKSEL CNUM

MOVLW D'1'

MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4个数码管

MOVF COFFSET,W

MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暂时存储COFFSET

MOVLW D'4'

MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;计数四次

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTA

CLRF PORTA

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'01101111';9

RETLW B'01111111';8

RETLW B'00000111';7

RETLW B'01111101';6

RETLW B'01101101';5

RETLW B'01100110';4

RETLW B'01001111';3

RETLW B'01011011';2

RETLW B'00000110';1

RETLW B'00111111';0

SETORIGIN:

MOVLW D'1'

MOVWF CNUM

MOVLW D'4'

MOVWF CNT

MOVF COFFSET,W

MOVWF PA

RETURN

SETPA:

MOVLW D'10'

MOVWF PA

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

MOVF CNUM,W

MOVWF NUM;数码管

MOVF PA,W

MOVWF OFFSET;图案

CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;数码管

CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;图案

DECF PA

BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;

CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

INCF CNUM

DECF CNT

BTFSC STATUS,Z

CALL SETORIGIN

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;滚动显示0-9,一秒滚一次每次显示四个数字

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

COFFSET RES 1

NUM RES 1

CNUM RES 1

PA RES 1

CNT RES 1

LP0 RES 1

LP1 RES 1

ISBLACK RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

ISR CODE 0x04;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVWF W_TMP

SWAPF STATUS,W

MOVWF S_TMP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

COMF ISBLACK

BTFSS ISBLACK,0

CALL DECRESE_COFFSET

BTFSC ISBLACK,0

CALL BLACK

BANKSEL TMR0

MOVLW B'11000000'

MOVWF TMR0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SWAPF S_TMP,W

MOVWF STATUS

SWAPF W_TMP,F

SWAPF W_TMP,W

RETFIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CODE

INIT

BANKSEL TMR0

CLRF TMR0

BANKSEL OPTION_REG

MOVLW B'00000111'

MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0设置为256分频

BANKSEL INTCON

BSF INTCON,GIE

BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;总中断使能,TMR0中断使能

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

BANKSEL OSCCON

MOVLW B'00010011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为125KHz,内部振荡器

BANKSEL COFFSET

MOVLW D'22'

MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10个数字

BANKSEL CNUM

MOVLW D'1'

MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4个数码管

MOVF COFFSET,W

MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暂时存储COFFSET

MOVLW D'4'

MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;计数四次

CLRF ISBLACK

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTA

CLRF PORTA

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'01101111';9

RETLW B'01111111';8

RETLW B'00000111';7

RETLW B'01111101';6

RETLW B'01101101';5

RETLW B'01100110';4

RETLW B'01001111';3

RETLW B'01011011';2

RETLW B'00000110';1

RETLW B'00111111';0

RETLW B'00000000';NULL——11

RETLW B'00000000';NULL——12

RETLW B'00000000';NULL——13

RETLW B'00000000';NULL——14

RETLW B'01011110';d——15

RETLW B'01111001';E——16

RETLW B'01111001';E————17

RETLW B'01101101';S——18

RETLW B'00000000';NULL——19

RETLW B'00000000';NULL——20

RETLW B'00000000';NULL——21

RETLW B'00000000';NULL——22

SETORIGIN:

MOVLW D'1'

MOVWF CNUM

MOVLW D'4'

MOVWF CNT

MOVF COFFSET,W

MOVWF PA

RETURN

SETPA:

MOVLW D'10'

MOVWF PA

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

DELAY: 

MOVLW 00FH

MOVWF LP0

L0 MOVLW 00FH

MOVWF LP1

L1 DECFSZ LP1,F

GOTO L1

DECFSZ LP0,F

GOTO L0

RETURN

DECRESE_COFFSET:

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

RETURN

BLACK:

BANKSEL PORTA

CLRF PORTA

CALL DELAY

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

MOVF CNUM,W

MOVWF NUM;数码管

MOVF PA,W

MOVWF OFFSET;图案

CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;数码管

CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;图案

DECF PA

BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;

CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

INCF CNUM

DECF CNT

BTFSC STATUS,Z

CALL SETORIGIN

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;加开机画面SEEd

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

COFFSET RES 1

NUM RES 1

CNUM RES 1

PA RES 1

CNT RES 1

LP0 RES 1

LP1 RES 1

ISBLACK RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

ISR CODE 0x04;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVWF W_TMP

SWAPF STATUS,W

MOVWF S_TMP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

PB_INT

BTFSC INTCON,RBIF

CALL PORTB_INT

TM0_INT

BTFSC INTCON,T0IF

CALL TMR0_INT;;;;;;;;;;;;;;;;;;;;;

COMF ISBLACK

BTFSS ISBLACK,0

CALL DECRESE_COFFSET

BTFSC ISBLACK,0

CALL BLACK

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

BANKSEL TMR0

MOVLW B'01111111'

MOVWF TMR0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SWAPF S_TMP,W

MOVWF STATUS

SWAPF W_TMP,F

SWAPF W_TMP,W

RETFIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CODE

INIT

BANKSEL TMR0

MOVLW B'01111111'

MOVWF TMR0

BANKSEL OPTION_REG

MOVLW B'00000111'

MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0设置为256分频

BANKSEL INTCON

BSF INTCON,GIE

BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;总中断使能,TMR0中断使能

BSF INTCON,RBIE;;;;;;;;;;;;;;;;;;;;;;PORTB电平变化中断使能

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

BANKSEL TRISB

MOVLW B'00100000'

MOVWF TRISB

BANKSEL IOCB

MOVLW B'00100000'

MOVWF IOCB

BANKSEL PORTB

CLRF PORTB

BANKSEL WPUB

MOVLW B'00100000'

MOVWF WPUB

BANKSEL OSCCON

MOVLW B'00010011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为125KHz,内部振荡器

BANKSEL COFFSET

MOVLW D'22'

MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10个数字

BANKSEL CNUM

MOVLW D'1'

MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4个数码管

MOVF COFFSET,W

MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暂时存储COFFSET

MOVLW D'4'

MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;计数四次

CLRF ISBLACK

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTA

CLRF PORTA

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'01101111';9

RETLW B'01111111';8

RETLW B'00000111';7

RETLW B'01111101';6

RETLW B'01101101';5

RETLW B'01100110';4

RETLW B'01001111';3

RETLW B'01011011';2

RETLW B'00000110';1

RETLW B'00111111';0

RETLW B'00000000';NULL——11

RETLW B'00000000';NULL——12

RETLW B'00000000';NULL——13

RETLW B'00000000';NULL——14

RETLW B'01011110';d——15

RETLW B'01111001';E——16

RETLW B'01111001';E————17

RETLW B'01101101';S——18

RETLW B'00000000';NULL——19

RETLW B'00000000';NULL——20

RETLW B'00000000';NULL——21

RETLW B'00000000';NULL——22

SETORIGIN:

MOVLW D'1'

MOVWF CNUM

MOVLW D'4'

MOVWF CNT

MOVF COFFSET,W

MOVWF PA

RETURN

SETPA:

MOVLW D'10'

MOVWF PA

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

DELAY: 

MOVLW 01FH

MOVWF LP0

L0 MOVLW 01FH

MOVWF LP1

L1 DECFSZ LP1,F

GOTO L1

DECFSZ LP0,F

GOTO L0

RETURN

DECRESE_COFFSET:

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

RETURN

BLACK:

BANKSEL PORTA

CLRF PORTA

CALL DELAY

RETURN

TMR0_INT:

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COFFSET减一

RETURN

PORTB_INT:

BANKSEL PORTB

BCF PORTB,4

BANKSEL INTCON

BCF INTCON,RBIF;;;;;;;;;;;;;;;;;;;;;;;;;;PORTB中断标志清除

MOVLW D'10'

MOVWF COFFSET

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

MOVF CNUM,W

MOVWF NUM;数码管

MOVF PA,W

MOVWF OFFSET;图案

CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;数码管

CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;图案

DECF PA

BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;

CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

INCF CNUM

DECF CNT

BTFSC STATUS,Z

CALL SETORIGIN

GOTO LOOP

END

胡巧平 16:47:17

恶心

曹航 17:55:01

#INCLUDE p16f886.inc  

__config _CONFIG1, _INTOSCIO & _WDT_OFF

CONTEXT_SAVING UDATA_SHR

W_TMP RES 1

S_TMP RES 1

OFFSET RES 1

COFFSET RES 1

NUM RES 1

CNUM RES 1

PA RES 1

CNT RES 1

LP0 RES 1

LP1 RES 1

ISBLACK RES 1

RESET CODE 0x0

PAGESEL INIT

GOTO INIT

ISR CODE 0x04;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVWF W_TMP

SWAPF STATUS,W

MOVWF S_TMP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

PB_INT

BTFSC INTCON,RBIF

CALL PORTB_INT

TM0_INT

BTFSC INTCON,T0IF

CALL TMR0_INT;;;;;;;;;;;;;;;;;;;;;

;COMF ISBLACK

;BTFSS ISBLACK,0

;CALL DECRESE_COFFSET

;NOP

;BTFSC ISBLACK,0

CALL BLACK

BANKSEL INTCON

BCF INTCON,2 ;;;;;;;;;;;;;清除TMR0中断标志位

BANKSEL TMR0

MOVLW B'01111111'

MOVWF TMR0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SWAPF S_TMP,W

MOVWF STATUS

SWAPF W_TMP,F

SWAPF W_TMP,W

RETFIE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CODE

INIT

BANKSEL TMR0

MOVLW B'01111111'

MOVWF TMR0

BANKSEL OPTION_REG

MOVLW B'00000111'

MOVWF OPTION_REG ;;;;;;;;;;;;;;;;;;;;;TMR0设置为256分频

BANKSEL INTCON

BSF INTCON,GIE

BSF INTCON,T0IE ;;;;;;;;;;;;;;;;;;;;;总中断使能,TMR0中断使能

BSF INTCON,RBIE;;;;;;;;;;;;;;;;;;;;;;PORTB电平变化中断使能

BANKSEL TRISC

CLRF TRISC

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

BANKSEL TRISA

CLRF TRISA

BANKSEL PORTA

CLRF PORTA

BANKSEL ANSEL

CLRF ANSEL

BANKSEL TRISB

MOVLW B'00100000'

MOVWF TRISB

BANKSEL IOCB

MOVLW B'00100000'

MOVWF IOCB

BANKSEL PORTB

CLRF PORTB

BANKSEL WPUB

MOVLW B'00100000'

MOVWF WPUB

BANKSEL OSCCON

MOVLW B'00010011'

MOVWF OSCCON ;;;;;;;;;;;;;;;;;;;;;;振荡器设置为125KHz,内部振荡器

BANKSEL COFFSET

MOVLW D'22'

MOVWF COFFSET;;;;;;;;;;;;;;;;;;;;10个数字

BANKSEL CNUM

MOVLW D'1'

MOVWF CNUM;;;;;;;;;;;;;;;;;;;;;;;;;4个数码管

MOVF COFFSET,W

MOVWF PA;;;;;;;;;;;;;;;;;;;;;;;;;;;PA暂时存储COFFSET

MOVLW D'4'

MOVWF CNT;;;;;;;;;;;;;;;;;;;;;;;;;;计数四次

CLRF ISBLACK

PAGESEL MAIN

GOTO MAIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;这里是函数区;;;;;;;;;;;;;;;;;

SELECT:

BANKSEL PORTA

CLRF PORTA

BANKSEL PORTC

MOVLW B'11111111'

MOVWF PORTC

MOVLW LOW STABLE ;获得TABLE的低8位

ADDWF NUM,F;TABLE值加上偏移量

MOVLW HIGH STABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF NUM,W;将需要调用的信号的地址写入W

CALL STABLE;

MOVWF PORTC

RETURN

STABLE:

MOVWF PCL;转到偏移的地址

RETLW B'11111110';1

RETLW B'11111101';2

RETLW B'11111011';3

RETLW B'11110111';4

WRITE:

MOVLW LOW TABLE ;获得TABLE的低8位

ADDWF OFFSET,F;TABLE值加上偏移量

MOVLW HIGH TABLE;获得TABLE的高5位

BTFSC STATUS,C;检测是否翻页

ADDLW 1;翻页则在TABLE的高5位加一

MOVWF PCLATH;将TABLE的高5位写入PCLATH

MOVF OFFSET,W;将需要调用的信号的地址写入W

CALL TABLE;

MOVWF PORTA

RETURN

TABLE:

MOVWF PCL;转到偏移的地址

RETLW B'01101111';9

RETLW B'01111111';8

RETLW B'00000111';7

RETLW B'01111101';6

RETLW B'01101101';5

RETLW B'01100110';4

RETLW B'01001111';3

RETLW B'01011011';2

RETLW B'00000110';1

RETLW B'00111111';0

RETLW B'00000000';NULL——11

RETLW B'00000000';NULL——12

RETLW B'00000000';NULL——13

RETLW B'00000000';NULL——14

RETLW B'01011110';d——15

RETLW B'01111001';E——16

RETLW B'01111001';E————17

RETLW B'01101101';S——18

RETLW B'00000000';NULL——19

RETLW B'00000000';NULL——20

RETLW B'00000000';NULL——21

RETLW B'00000000';NULL——22

SETORIGIN:

MOVLW D'1'

MOVWF CNUM

MOVLW D'4'

MOVWF CNT

MOVF COFFSET,W

MOVWF PA

RETURN

SETPA:

MOVLW D'10'

MOVWF PA

RETURN

SETCOFFSET:

MOVLW D'10'

MOVWF COFFSET

RETURN

DELAY: 

MOVLW 01FH

MOVWF LP0

L0 MOVLW 01FH

MOVWF LP1

L1 DECFSZ LP1,F

GOTO L1

DECFSZ LP0,F

GOTO L0

RETURN

DECRESE_COFFSET:

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

RETURN

BLACK:

BANKSEL PORTA

CLRF PORTA

CALL DELAY

RETURN

TMR0_INT:

DECF COFFSET

BTFSC STATUS,Z

CALL SETCOFFSET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;COFFSET减一

RETURN

PORTB_INT:

BANKSEL PORTB

BCF PORTB,4

BANKSEL INTCON

BCF INTCON,RBIF;;;;;;;;;;;;;;;;;;;;;;;;;;PORTB中断标志清除

MOVLW D'10'

MOVWF COFFSET

RETURN

;;;;;;;;;;函数区到此为止;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MAIN

LOOP

MOVF CNUM,W

MOVWF NUM;数码管

MOVF PA,W

MOVWF OFFSET;图案

CALL SELECT;;;;;;;;;;;;;;;;;;;;;;;;;数码管

CALL WRITE;;;;;;;;;;;;;;;;;;;;;;;;;;图案

DECF PA

BTFSC STATUS,Z;;;;;;;;;;;;;;;;;;;;;;

CALL SETPA;;;;;;;;;;;;;;;;;;;;;;;;;;

INCF CNUM

DECF CNT

BTFSC STATUS,Z

CALL SETORIGIN

GOTO LOOP

END

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;最终版




推荐阅读
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
author-avatar
悉尼新鲜事儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有