久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2205|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STC12C5204AD單片機(jī)AD轉(zhuǎn)換,改變檢測(cè)電壓后只有重新上電再更新串口數(shù)據(jù)?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include<STC12C5A60S2.h>
unsigned int a;
unsigned int res;
//定義延時(shí)函數(shù)                                          

void delay(a){
while(--a!=0){
unsigned int i;
for(i=0;i<600;i++);
}
}

//串口初始化函數(shù)
void UART_INT(void){

PCON=0X80;
TMOD=0X20;                                                   
SCON=0X50;
TH1=0XF3;
TL1=0XF3;
EA=1;
ES=1;
TR1=1;

}

//AD轉(zhuǎn)換函數(shù)初始化
void ADC_INT()
{
P1ASF=0X01;//選擇P1.0口作AD轉(zhuǎn)換輸入口;
ADC_RES=0;//轉(zhuǎn)換結(jié)果寄存器清零
ADC_CONTR=ADC_CONTR|0x80;         //          讓第七位ADC_POWER置1,打開電源
EADC=1;         //打開AD轉(zhuǎn)換開關(guān)
delay(2);        //延時(shí)等待電源穩(wěn)定
ADC_CONTR=ADC_CONTR|0x08; //讓第3位ADC_START置1,開始轉(zhuǎn)換
}

//AD中斷函數(shù)
ADC_ISR() interrupt 5 using 1
{         
while((ADC_CONTR&0x10)==0);         //        等待轉(zhuǎn)換完成,第四位ADC_FLAG標(biāo)志位為0時(shí)等待
res=ADC_RES;//轉(zhuǎn)換完成后,將值賦給串口數(shù)據(jù)寄存器
SBUF=res;        
ADC_CONTR|=0x08;//重新啟動(dòng)ADC轉(zhuǎn)換                                
}
//
void main(void)                  
{
UART_INT();        
ADC_INT();
while(1){
while(!TI);        
SBUF=res;        
TI=0;
}
}
//


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2019-8-16 06:28 | 只看該作者

  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ---------------------------------------------*/
  3. /* --- STC12C5Axx Series MCU A/D Conversion Demo -------------------*/
  4. /* --- Mobile: (86)13922805190 -------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966----------------------*/
  7. /* --- Web: www.STCMCU.com -----------------------------------------*/
  8. /* --- Web: www.GXWMCU.com -----------------------------------------*/
  9. /* If you want to use the program or the program referenced in the  */
  10. /* article, please specify in which data and procedures from STC    */
  11. /*------------------------------------------------------------------*/

  12. #include "reg51.h"
  13. #include "intrins.h"

  14. #define FOSC    11059200L
  15. #define BAUD    9600

  16. typedef unsigned char BYTE;
  17. typedef unsigned int WORD;

  18. /*Declare SFR associated with the ADC */
  19. sfr ADC_CONTR   =   0xBC;           //ADC control register
  20. sfr ADC_RES     =   0xBD;           //ADC hight 8-bit result register
  21. sfr ADC_LOW2    =   0xBE;           //ADC low 2-bit result register
  22. sfr P1ASF       =   0x9D;           //P1 secondary function control register

  23. /*Define ADC operation const for ADC_CONTR*/
  24. #define ADC_POWER   0x80            //ADC power control bit
  25. #define ADC_FLAG    0x10            //ADC complete flag
  26. #define ADC_START   0x08            //ADC start control bit
  27. #define ADC_SPEEDLL 0x00            //420 clocks
  28. #define ADC_SPEEDL  0x20            //280 clocks
  29. #define ADC_SPEEDH  0x40            //140 clocks
  30. #define ADC_SPEEDHH 0x60            //70 clocks

  31. void InitUart();
  32. void SendData(BYTE dat);
  33. void Delay(WORD n);
  34. void InitADC();

  35. BYTE ch = 0;                        //ADC channel NO.

  36. void main()
  37. {
  38.     InitUart();                     //Init UART, use to show ADC result
  39.     InitADC();                      //Init ADC sfr
  40.     IE = 0xa0;                      //Enable ADC interrupt and Open master interrupt switch
  41.                                     //Start A/D conversion
  42.     while (1);
  43. }

  44. /*----------------------------
  45. ADC interrupt service routine
  46. ----------------------------*/
  47. void adc_isr() interrupt 5
  48. {
  49.     ADC_CONTR &= !ADC_FLAG;         //Clear ADC interrupt flag

  50.     SendData(ch);                   //Show Channel NO.
  51.     SendData(ADC_RES);              //Get ADC high 8-bit result and Send to UART

  52. //if you want show 10-bit result, uncomment next line
  53. //    SendData(ADC_LOW2);             //Show ADC low 2-bit result
  54.    
  55.     if (++ch > 7) ch = 0;           //switch to next channel
  56.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  57. }

  58. /*----------------------------
  59. Initial ADC sfr
  60. ----------------------------*/
  61. void InitADC()
  62. {
  63.     P1ASF = 0xff;                   //Set all P1 as analog input port
  64.     ADC_RES = 0;                    //Clear previous result
  65.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  66.     Delay(2);                       //ADC power-on delay and Start A/D conversion
  67. }

  68. /*----------------------------
  69. Initial UART
  70. ----------------------------*/
  71. void InitUart()
  72. {
  73.     SCON = 0x5a;                    //8 bit data ,no parity bit
  74.     TMOD = 0x20;                    //T1 as 8-bit auto reload
  75.     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
  76.     TR1 = 1;                        //T1 start running
  77. }

  78. /*----------------------------
  79. Send one byte data to PC
  80. Input: dat (UART data)
  81. Output:-
  82. ----------------------------*/
  83. void SendData(BYTE dat)
  84. {
  85.     while (!TI);                    //Wait for the previous data is sent
  86.     TI = 0;                         //Clear TI flag
  87.     SBUF = dat;                     //Send current data
  88. }

  89. /*----------------------------
  90. Software delay function
  91. ----------------------------*/
  92. void Delay(WORD n)
  93. {
  94.     WORD x;

  95.     while (n--)
  96.     {
  97.         x = 5000;
  98.         while (x--);
  99.     }
  100. }

復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久 | 久久精品视频网站 | wwwxxx日本在线观看 | 有码在线 | 国产精品久久久久久一级毛片 | 青青久草 | 在线中文字幕第一页 | 四季久久免费一区二区三区四区 | av黄色在线观看 | www.se91| 99久久国产综合精品麻豆 | 国产成人99久久亚洲综合精品 | 欧美一区二区三区在线观看视频 | 日本免费在线 | 淫片一级国产 | 一级欧美一级日韩片免费观看 | 国产一级一级毛片 | 日韩在线视频一区二区三区 | 1204国产成人精品视频 | 久久日韩精品一区二区三区 | 亚洲字幕在线观看 | 久久成人18免费网站 | 中文字幕一区二区三区在线观看 | 一级毛片视频 | 国产成人精品一区二区三 | 国产日韩欧美 | www国产亚洲精品久久网站 | h片在线观看免费 | 成人av免费播放 | 超碰在线国产 | 国产大片黄色 | 天天操夜夜操 | ririsao久久精品一区 | 亚洲经典一区 | 久久精品超碰 | 日韩三级| 综合精品久久久 | 国产精品精品 | 午夜丰满寂寞少妇精品 | 黄色免费网站在线看 | 国产欧美一区二区三区免费 |