#INCLUDE"P16F877.inc" ORG 000H GOTO A1 ORG 004H;定时中断入口地址 GOTO ZD01; 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 ;间接寻址 BSF STATUS,RP0;选择体1 BCF STATUS,RP1; MOVLW 00H;1:2TMRO比例 MOVWF OPTION_REG;分频1/2 BCF STATUS,RP0;体0 BCF STATUS,RP1; MOVLW 0FFH; MOVFW TMR0;初值 BCF INTCON,T0IF;清定时中断标志 BSF INTCON,T0IE;开定时中断 BSF INTCON,GIE;开总中断 GOTO $ ZD01 BCF INTCON,GIE;关总中断 BTFSS INTCON,T0IF;判断是否产生定时中断 GOTO ZD03;否跳出是继续执行 BCF INTCON,T0IF 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;左移位码 DECFSZ 40H,1;判断是否显示完4位 GOTO ZD02;否则继续显示 MOVLW 4;显示位数 MOVWF 40H; MOVLW B'00000001';位码 MOVWF 41H; MOVLW 50H; MOVWF FSR ;间接寻址 ZD02 MOVLW 0FFH; MOVFW TMR0;重装初值 ZD03 BSF INTCON,GIE;开总中断 RETFIE ;中断返回 ;******************************************** ; 数据表 ;******************************************** 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