大香蕉大香蕉在线播放-日韩av在线一区中文字幕-日韩熟女熟妇久久精品综合-精品免费视频一区二区三区

技術(shù)熱線: 4007-888-234
設(shè)計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享

技術(shù)支持

從全面的產(chǎn)品導入到強大技術(shù)支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

普通IO口實現(xiàn)測量可調(diào)電阻,調(diào)節(jié)LED閃爍頻率

更新時間: 2019-03-23
閱讀量:2582

十年專注單片機方案開發(fā)的方案公司英銳恩,分享普通I/O口實現(xiàn)測量可調(diào)電阻,調(diào)節(jié)LED的閃爍頻率。英銳恩現(xiàn)提供服務產(chǎn)品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

//引入頭文件*********************************************************
#include          "delay.h"
#include          "delay.c"
#include          "pic1684.h"

//輸入定義***********************************************************
#define       Key       RA0                                //按鍵輸入
#define       InRc      RA1                                //測量輸入                                  

//輸出定義***********************************************************
#define       RcSu      TRISA1                             //輸出設(shè)置

//公用變量***********************************************************
     unsigned char cycle = 0;                              //計時母數(shù)
     unsigned char coune = 0;                              //時間計數(shù)

//*******************************************************************
//函數(shù)名稱:port_init();
//輸入?yún)?shù):無
//輸出參數(shù):無
//功能描述:端口設(shè)置
//建造日期:2008.07.08
//*******************************************************************
void PortInit(void) 

{
     PORTA = 0x00;                                         //
     PORTB = 0x00;                                         //
  
     TRISA = 0x01;                                         //A 口設(shè)置   
     TRISB = 0x00;                                         //B 口設(shè)置
 }

//*******************************************************************
//函數(shù)名稱:IdsInit();
//輸入?yún)?shù):無
//輸出參數(shù):無
//功能描述:中斷設(shè)置
//建造日期:2008.07.08
//*******************************************************************
void IdsInit(void)
 {
     OPTION = 0x87;                                        //分頻因子 

 TMR0 = 0x3d;                                          //定時初值  
     T0IE = 1;                                             //開啟定時       
     GIE = 1;                                              //準許中斷
 }

//*******************************************************************
//函數(shù)名稱:DischargeOut();
//輸入?yún)?shù):無
//輸出參數(shù):無
//功能描述:電容放電
//建造日期:2008.07.08
//*******************************************************************
void DischargeOut(void)
 {
     InRc = 0;                                             //置低電平
     RcSu = 0;                                             //開始放電

     DelayMs(1);                                           //放電時間
 }

//*******************************************************************
//函數(shù)名稱:SurveyRc();
//輸入?yún)?shù):無
//輸出參數(shù):充電時間
//功能描述:測量充電時間
//建造日期:2008.07.08
//*******************************************************************
unsigned char SurveyRc(void) 

 {
     unsigned char count = 0;                              //時間計數(shù)
     
     DischargeOut();                                       //電容放電
     RcSu = 1;                                             //輸入設(shè)置
    
     while (!InRc) 
      {
       count++;                                            //開始計時
       if (count == 100) break;                            //最大限時  
      }
    
     return count;                                         //返回時間 
 }

//******************************************************************* 

//函數(shù)名稱:DataAdd(*buffer, size);
//輸入?yún)?shù):緩沖區(qū)首址, 大小
//輸出參數(shù):數(shù)據(jù)總和
//功能描述:緩沖區(qū)所有數(shù)據(jù)相加
//建造日期:2008.07.08
//*******************************************************************
unsigned int DataAdd(unsigned char *buffer, unsigned char size)
 {
     unsigned int add;
     unsigned char i;
     
     add = 0;                                              //數(shù)據(jù)清零
 
     for (i = 0; i < size; i++)
      {
       add += buffer[i];                                   //數(shù)據(jù)相加
      }
  
     return add;                                           //返回總和                   
 }

//******************************************************************* 

//函數(shù)名稱:DataMax(*buffer, size);
//輸入?yún)?shù):緩沖區(qū)首址, 大小
//輸出參數(shù):數(shù)據(jù)最大值
//功能描述:選出緩沖區(qū)最大值
//建造日期:2008.07.08
//*******************************************************************
unsigned char DataMax(unsigned char *buffer, unsigned char size)
 {
     unsigned char max, i;
     
     max = buffer[0];                                      //假設(shè)最大
     
     for (i = 1; i < size; i++)
      {
       if (max < buffer[i]) max = buffer[i];               //對比最大 
      }
  
     return max;                                           //最大數(shù)據(jù)                   
 }

//*******************************************************************
//函數(shù)名稱:DataMin(*buffer, size); 

//輸入?yún)?shù):緩沖區(qū)首址, 大小
//輸出參數(shù):數(shù)據(jù)最小大值
//功能描述:選出緩沖區(qū)最小值
//建造日期:2008.07.08
//*******************************************************************
unsigned char DataMin(unsigned char *buffer, unsigned char size)
 {
     unsigned char min, i;
     
     min = buffer[0];                                      //假設(shè)最小
     
     for (i = 1; i < size; i++)
      {
       if (min > buffer[i]) min = buffer[i];               //對比最小 
      }
  
     return min;                                           //最小數(shù)據(jù)
 }

//*******************************************************************
//函數(shù)名稱:DataEqually(idend, isor);
//輸入?yún)?shù):被除數(shù),除數(shù)
//輸出參數(shù):平均值
//功能描述:使所數(shù)據(jù)相等
//建造日期:2008.07.08
//*******************************************************************
unsigned char DataEqually(unsigned int idend, unsigned char isor)
 {
     return (idend / isor);                                //數(shù)據(jù)平均 

//*******************************************************************
//函數(shù)名稱:FilterData(); 
//輸入?yún)?shù):無 
//輸出參數(shù):平均值 
//功能描述:取樣平均濾波
//建造日期:2008.07.08
//*******************************************************************
unsigned char FilterData(void)
 {
     unsigned char i, max, min, data[10];
     unsigned int sum;
  
     for (i = 0; i < 10; i++) data[i] = SurveyRc();        //收集數(shù)據(jù) 

   sum = DataAdd(data, 10);                              //數(shù)據(jù)相加
     max = DataMax(data, 10);                              //取最大值
     min = DataMin(data, 10);                              //取最小值

     return (DataEqually((sum - max - min), 8));           //取平均值             
 }  

//*******************************************************************
//函數(shù)名稱:MonitorRC();
//輸入?yún)?shù):無
//輸出參數(shù):無
//功能描述:監(jiān)測電位器
//建造日期:2008.07.08
//*******************************************************************
void MonitorRC(void)
 {   
     static unsigned char value[8]; 
     unsigned char i, update;
     
     update = DataEqually((DataAdd(value, 8)), 8);         //數(shù)據(jù)平均

     if (update != cycle)                                  //數(shù)據(jù)變動
      {
       cycle = update;                                     //更新周期
       coune = 0;                                          //計數(shù)清零 
      }  
    
     for (i = 0; i < 7; i++) value[i] = value[i + 1];      //數(shù)據(jù)左移 

value[7] = FilterData();                              //采集數(shù)據(jù)
 }
 
//*******************************************************************
//函數(shù)名稱:TimeInt();
//輸入?yún)?shù):無
//輸出參數(shù):無
//功能描述:定時中斷服務
//建造日期:2008.07.08
//*******************************************************************
void interrupt TimeInt(void)
 {   
     coune++;                                              //周期遞增
      

  if (coune == cycle)                                   //是否相等
      {
       coune = 0;                                          //周期清零
       PORTB ^= 0x80;                                      //輸出指示
      }  
   
     TMR0 = 0x3d;                                          //定時初值
     T0IF = 0;                                             //清除標志
 }

//*******************************************************************
//函數(shù)名稱:main();
//輸入?yún)?shù):無
//輸出參數(shù):無
//功能描述:主要程序
//建造日期:2008.07.08
//*******************************************************************
void main(void)
 {   
     PortInit();                                           //腳位設(shè)置
     IdsInit();                                            //中數(shù)設(shè)置

     while (1)
      {
       MonitorRC();                                        //啟動監(jiān)測
       DelayMs(5);                                         //監(jiān)測周期
      }  
 } 

(文源網(wǎng)絡(luò),侵刪)

日本一区二区三区高潮喷吹| 玖玖资源站无码专区| 91精品捆绑蜜桃| 美女被大屌操大骚逼| 高清无码精品一区二区三区| 使劲操大骚逼av| 欧美一区亚洲一区视频在线观看| 精品福利一区二区三区在线观看| 69国产精品久久久久久人| 国产精品熟女视频播放| 日本最新免费不卡一区二区三区| av中文字幕一区二区精品久久| 白虎嫩穴抠逼高潮| 色一情一交一乱一区二区| 操女人真人大骚逼| 久久综合娱乐中文网| 日本av在线一区二区| 被几个大屌老外轮操| 91啪国线自产2019| 91污在线观看一区二区三区| 正在播放老熟女人与小伙| 操的我的逼逼好爽好多水| 日韩欧美一区二区三区在线视频| 强奸啪啪啪好大欧美| 亚洲国产国产综合一区首页| 日韩人妻精品一区二区三区99| 日本精品久久人妻一区二区三区| 公交车上被后入搞逼漫画| 日本成人在线一区中文字幕| 在线免费观看一区| 午夜福利国产三级片| 男生和女人靠逼视频| 欧美黄色三级成人小视频| 欧美一区二区高清视频在线观看| 又爽又粗又大又长的爆草| 插女生那个的视频| 国产精品免费第一区二区| 国产女明星一级毛片| 天天舔操操操av| 大鸡巴狂插嫩逼视频| 国产女主播喷出白浆视频|