1.c

来自「PIC16F877应用的AD转换主程序 并可以通过LCD显示」· C语言 代码 · 共 114 行

C
114
字号
#include <pic.h>
#include <stdio.h>
#include <math.h>
#include "lcd.h"
bank1 int cplz[11];
union cp1                      //定义共同体存放数值
{
    int y1;
    unsigned char cple[2];
}cplu;
bank2 unsigned char count,data,k;
bank2 int T5,u0;
bank2 double RE5;
bank2 unsigned  char s[4];   


void ccpint()                 //CCP初始化
{
    CCP1CON=0x05;
    T1CON=0x00;
    PEIE=1;
    CCP1IE=1;
    TRISC2=1;                  //使用RC2口
}

void initial()              //初始化计数值
{
    count=0x0B;
}

void interrupt cplint(void)   //中断程序
{
   if(CCP1IF==1)
   {CCP1IF=0;
    TMR1IF=0;
    cplu.cple[0]=CCPR1L;
    cplu.cple[1]=CCPR1H;
    cplz[data]=cplu.y1;
    CCP1CON=CCP1CON^0x01;
    data++;
    count--;
    
    } 
}

void period()               //周期子程序
{
   T5=cplz[10]-cplz[0];
   RE5=(double)T5;
   RE5=RE5/5;
}

void frequency()           //频率子程序
{   
   period();
   RE5=1000000/RE5;
}



void main()
{
  ccpint();
  initial();
  init(); 
  lcd_init(); 
  write_web();   
  TMR1H=0;
  TMR1L=0;
  CCP1IF=0;
  TMR1IF=0;
  INTCON=0xc0;
  TMR1ON=1;
  while(1)
  {   count=0x0B;  
      TMR1H=0;
      TMR1L=0;
      CCP1IF=0;
      TMR1IF=0;
      GIE=1;
      PEIE=1;
      TMR1ON=1;
    
     while(1)
    { if(count==0) break; }
      TMR1ON=0;                  //关定时器
      GIE=0;                     //关总中断
      frequency();         
 //   precision(RE5);   
      PORTD=0xc0;            
      lcd_enable();             
      write_tel(RE5);
   }
}











   







⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?