本帖最后由 tree844 于 2021-11-20 21:10 编辑
- #include <xc.h>
- #define _XTAL_FREQ 4000000
- const unsigned char TABLE[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
- unsigned int time;
- void init(void);
- void init_TIM0(void);
- void disp(void);
- void main(void)
- {
- init();
- init_TIM0();
- while(1)
- {
- disp();
- }
- }
- void init(void)
- {
- PORTD = 0x00;
- TRISD = 0x00;
- PORTA = 0x00;
- TRISA = 0x00;
- ADCON1 = 0x06;
- }
- void init_TIM0(void)
- {
- TMR0 = 58; //256-200=56;56+2=58
- OPTION_REG = 0x01; //0000 0001 4分频,定时周期200us*4=800us
- INTCON = 0xA0; //1010 0000
- }
- void __interrupt() isr_TMR0(void)
- {
- static unsigned char i = 0;
- if(T0IE && T0IF)
- {
- TMR0 = TMR0 + 58;
- if(i < 124)
- {
- i++;
- }
- else //0.8ms*125 = 100ms
- {
- i = 0;
- if(time < 999)
- {
- time++;
- }
- else
- {
- time = 0;
- }
- }
- T0IF = 0;
- }
- }
- void disp(void)
- {
- PORTD = TABLE[time % 10];
- PORTA = 0x01;
- __delay_ms(1);
- PORTA = 0x00;
-
- PORTD = TABLE[time /10 % 10] | 0x80;
- PORTA = 0x02;
- __delay_ms(1);
- PORTA = 0x00;
-
- PORTD = TABLE[time/100];
- PORTA = 0x04;
- __delay_ms(1);
- PORTA = 0x00;
- }
|