PIC单片机定时器的使用(16F877)

    xiaoxiao2021-03-25  77

    /*******************************************/ //功能:60倒计时,蜂鸣器以及数码管的使用 //开发板:PIC16F877 /*******************************************/

    include

    define uchar unsigned char

    define uint unsigned int

    void delay(uchar a,uchar x); uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x00};//数组 uchar LED[3]; void init();//初始化函数 void interrupt TMRO();//TMRO中断函数 uint counter; uchar tmro_counter; void LED_DISP();//数码管的显示函数 main() { init(); counter=60; while(1) { //counter=60; LED[1]=(uchar)(counter/10); LED[2]=(uchar)(counter); LED_DISP(); //counter–; //if(counter==0) //RE0=1; } }

    void init() { TRISC=0X00; TRISA=0X00; TRISD=0X00; PORTD=0XFF; TRISE=0x00; RC5=0; OPTION_REG=0X07;//256分频 TMR0=61; INTCON=0Xa0; } void interrupt TMRO() { TMR0IF=0; //TMR0=158; tmro_counter++; if(tmro_counter==20) { tmro_counter=0; tmro_counter++; counter–; if(counter==0) RE0=1; } TMR0=61; } void LED_DISP() { uchar timer=0; uchar temp=0x80; RA3=0; //for(k=0;k<=50;k++) for(timer=1;timer<=2;timer++) { RC4=1; PORTD=temp; RC4=0; RC3=1; PORTD=table[LED[timer]]; RC3=0; temp>>=1; delay(10,10); RC4=1; PORTD=0X00; RC4=0; delay(1,10); } } /*********************** /*延迟函数*** /************************ void delay(uchar a,uchar x) { while(–a) while(–x); }

    转载请注明原文地址: https://ju.6miu.com/read-15023.html

    最新回复(0)