#INCLUDE"P16F877.inc" ORG 000H GOTO A1 ORG 0CH A1 MOVLW 1;位1顯示數 MOVWF 50H; MOVLW 2;位2顯示數 MOVWF 51H; MOVLW 3;位3顯示數 MOVWF 52H; MOVLW 4;位4顯示數 MOVWF 53H; MOVLW 4;顯示位數 MOVWF 40H; MOVLW B'00000001';位碼 MOVWF 41H; MOVLW 50H; MOVWF FSR ;間接尋址 A2 BSF STATUS,RP0;體1 BCF STATUS,RP1; MOVLW 0; MOVWF TRISB;RB口設為輸出口 MOVWF TRISD;RD口設為輸出口 BCF STATUS,RP0;體0 BCF STATUS,RP1; MOVLW 0FFH; MOVWF PORTB;RB口輸出高電平 MOVLW 0 MOVWF PORTD;RD口輸出低電平起清屏作用 MOVFW INDF;間接尋址顯示數據 CALL Q1;查數據表 MOVWF PORTB;顯示斷碼輸出到RB口 INCF FSR,1;間接尋址地址加1 MOVFW 41H ;位碼 MOVWF PORTD;位碼輸出到RD口 RLF 41H,0;處理C RLF 41H,1;左移位碼 CALL M001;延時 DECFSZ 40H,1;判斷是否顯示完4位 GOTO A2;否則繼續顯示 GOTO A1;是返回 ;********************************************* ; 延時子程序 ;********************************************* M001 MOVLW 2 MOVWF 30H M002 MOVLW 250 MOVWF 31H DECFSZ 31H,1 GOTO $-1 DECFSZ 30H,1 GOTO M002 RETURN ;******************************************** ; 數據表 ;******************************************** Q1 ADDWF PCL,1 RETLW 00C0H ;0 RETLW 00F9H ;1 RETLW 00A4H ;2 RETLW 00B0H ;3 RETLW 0099H ;4 RETLW 0092H ;5 RETLW 0082H ;6 RETLW 00F8H ;7 RETLW 0080H ;8 RETLW 0090H ;9 RETLW 0088H ;A RETLW 0083H ;B RETLW 00C6H ;C RETLW 00A1H ;D RETLW 0086H ;E RETLW 008EH ;F END