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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2255|回復(fù): 1
收起左側(cè)

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

[復(fù)制鏈接]
ID:600558 發(fā)表于 2019-8-15 19:56 | 顯示全部樓層 |閱讀模式
#include<STC12C5A60S2.h>
unsigned int a;
unsigned int res;
//定義延時函數(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);        //延時等待電源穩(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時等待
res=ADC_RES;//轉(zhuǎn)換完成后,將值賦給串口數(shù)據(jù)寄存器
SBUF=res;        
ADC_CONTR|=0x08;//重新啟動ADC轉(zhuǎn)換                                
}
//
void main(void)                  
{
UART_INT();        
ADC_INT();
while(1){
while(!TI);        
SBUF=res;        
TI=0;
}
}
//


回復(fù)

使用道具 舉報

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

復(fù)制代碼



回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品九九久久 | 日本午夜免费福利视频 | 操人网站 | 亚洲人成网亚洲欧洲无码 | 久久久久久国产 | 人人人艹 | 中文字幕av第一页 | 91一区二区| 婷婷丁香在线视频 | 久久国产精品久久久久 | 亚洲日韩中文字幕一区 | 天天操操操操操 | 欧美日韩亚洲一区 | 国产操操操| 成人精品久久日伦片大全免费 | 毛片综合 | h片在线免费看 | 一级片免费在线观看 | 亚洲欧美国产精品久久 | 欧美精三区欧美精三区 | 欧美精品一区二区在线观看 | 国产午夜精品视频 | 九色网址 | 麻豆久久久9性大片 | 久久久精 | 成人国产精品视频 | 亚洲色欲色欲www | 欧美精品一区在线 | 欧美激情久久久 | 日韩a| 国产女人与拘做视频免费 | 99精品电影| 国产性色视频 | 曰韩三级 | 喷水毛片 | 国产探花在线精品一区二区 | 欧美a在线看 | 国产精品一区一区三区 | 亚洲色图在线观看 | 国产福利小视频 | 亚洲精品一区二区三区四区高清 |