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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2338|回復: 1
收起左側

STC12C5204AD單片機AD轉換,改變檢測電壓后只有重新上電再更新串口數據?

[復制鏈接]
ID:600558 發表于 2019-8-15 19:56 | 顯示全部樓層 |閱讀模式
#include<STC12C5A60S2.h>
unsigned int a;
unsigned int res;
//定義延時函數                                          

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

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

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

}

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

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


回復

使用道具 舉報

ID:213173 發表于 2019-8-16 06:28 | 顯示全部樓層
無標題.jpg
  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. }

復制代碼



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情在线观看一区二区三区 | 欧美成人精品一区二区男人看 | 亚洲午夜av久久乱码 | 精品久久久久国产免费第一页 | 日韩精品一区二区三区中文在线 | 亚洲天天干 | 成人免费视频网站在线看 | 在线免费视频一区 | 日韩91| 91亚洲国产成人久久精品网站 | 天天草天天爱 | 国产福利91精品一区二区三区 | 精品免费国产视频 | 久久综合九色综合欧美狠狠 | 日本在线综合 | 日韩av一区二区在线 | 久久国产精品免费一区二区三区 | 亚洲精品电影网在线观看 | 在线中文字幕av | 最新国产在线 | 国产网站在线播放 | 国产91精品网站 | 日韩免费网站 | 日韩激情在线 | 欧美毛片免费观看 | av在线免费观看网址 | 女人牲交视频一级毛片 | 国产女人第一次做爰毛片 | jlzzxxxx18hd护士| 国产精品1区 | 国产精彩视频在线观看 | 天天干天天玩天天操 | 一区精品在线观看 | 亚洲欧洲一区二区 | 天天色av| 中文字幕在线视频一区二区三区 | 在线看一区二区三区 | 色婷婷久久综合 | 国产粉嫩尤物极品99综合精品 | 人人擦人人 | 欧美一级久久 |