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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1680|回復: 5
收起左側

compiling 溫度.c... 溫度.C(75): error C202: 'ADC_CONTR': undefined identifier...

[復制鏈接]
ID:1080551 發表于 2023-5-28 23:18 | 顯示全部樓層 |閱讀模式
#include <REG51.H>




#define TXD_Pin P3_1       //定義TXD引腳為P3.1
#define BAUDRATE 9600      //定義波特率
#define FREQ_OSC 11059200  //定義外部晶振頻率
#define TH 40              //定義溫度閾值


void send_data(unsigned char dat);
void send_string(unsigned char *s);
void init_uart();
void init_adc();
int get_adc_value();
void delay(int time);
void display_temp(int temp);


void main()
{
    unsigned int adc_val = 0;
    int temp = 0;


    init_uart();   //初始化串口
    init_adc();    //初始化ADC


    while(1)
    {
        adc_val = get_adc_value();   //讀取ADC值
        temp = (int)(adc_val / 2);   //將ADC值轉換為溫度(假設為50mV/℃)


        if(temp >= TH)   //如果溫度超過閾值,則LED閃爍
        {
            display_temp(temp);
            delay(500);
        }
        else   //否則,LED顯示當前溫度
        {
            display_temp(temp);
        }
    }
}


void init_uart()
{
    //計算波特率預分頻器的值
    unsigned char SCON_value = 0x50;       //定義串口控制寄存器的初始值
    unsigned int Baud_value = 0x10000 - (FREQ_OSC / (16 * BAUDRATE));


    //配置串口
    SCON = SCON_value;
    TMOD &= 0x0F;
    TMOD |= 0x20;                     //使用timer1作為波特率發生器,允許8位自動重載
    TH1 = (unsigned char)(Baud_value / 256);  //設置波特率預分頻器的高8位
    TL1 = (unsigned char)Baud_value;         //設置波特率預分頻器的低8位
    TR1 = 1;                        //啟動timer1
}


void send_data(unsigned char dat)
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}


void send_string(unsigned char *s)
{
    while(*s)
    {
        send_data(*s++);
    }
}


void init_adc()
{
    EA = 1;                       //使能全局中斷
    ADC_CONTR = 0x80;             //設置ADC時鐘源為系統時鐘、ADC啟動、ADC自動重載模式
}


int get_adc_value()
{
    ADC_CONTR |= 0x08;            //啟動ADC轉換
    while(!(ADC_CONTR & 0x10));   //等待ADC轉換完成
    return ADC_RES * 256 + ADC_RESL;  //返回ADC轉換結果
}


void delay(int time)
{
    int i, j;
    for (i = time; i > 0; i--)
    {
        for (j = 10; j > 0; j--);
    }
}


void display_temp(int temp)
{
    static unsigned char code digit_table[] = { //數碼管顯示表(0~9,A~F)
          0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90,
          0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};


    int i;
    unsigned char dat[4] = {0, 0, 0, 0};   //定義一個數組,用于存放各個位的顯示值


    dat[0] = digit_table[temp % 10];       //個位
    dat[1] = digit_table[(temp / 10) % 10];//十位
    dat[2] = digit_table[(temp / 100) % 10];//百位
    dat[3] = digit_table[temp / 1000];     //千位


    //依次點亮每個數碼管,顯示溫度數值
    for(i = 0; i < 4; i++)
    {
        P2 = 1 << i;
        P0 = dat;
        delay(1);
    }
}


回復

使用道具 舉報

ID:1080551 發表于 2023-5-28 23:19 | 顯示全部樓層
大神幫忙解決一下compiling 溫度.c...
溫度.C(75): error C202: 'ADC_CONTR': undefined identifier
溫度.C(80): error C202: 'ADC_CONTR': undefined identifier
溫度.C(81): error C202: 'ADC_CONTR': undefined identifier
溫度.C(82): error C202: 'ADC_RES': undefined identifier
溫度.c - 4 Error(s), 0 Warning(s). 這個問題
回復

使用道具 舉報

ID:277531 發表于 2023-5-29 06:27 | 顯示全部樓層
undefined identifier==未定義字符
回復

使用道具 舉報

ID:213173 發表于 2023-5-29 07:17 | 顯示全部樓層
1538256872 發表于 2023-5-28 23:19
大神幫忙解決一下compiling 溫度.c...
溫度.C(75): error C202: 'ADC_CONTR': undefined identifier
溫度 ...

//宏定義ADC的操作命令
#define ADC_POWER   0x80                        //ADC power control dit (宏定義ADC電源控制位)1000 0000
#define ADC_START   0x08                        //ADC start control dit (宏定義ADC啟動控制位)0000 1000
#define ADC_FLAG    0x10                        //ADC complete flag (宏定義ADC完成標志位)    0001 0000
#define ADC_SPEEDLL 0x00                        //420 clocks (宏定義420時鐘)速度控制         0000 0000
回復

使用道具 舉報

ID:213173 發表于 2023-5-29 07:23 | 顯示全部樓層
1538256872 發表于 2023-5-28 23:19
大神幫忙解決一下compiling 溫度.c...
溫度.C(75): error C202: 'ADC_CONTR': undefined identifier
溫度 ...

sfr  AUXR       =   0x8e;       //輔助寄存器                              

sfr ADC_CONTR   =   0xBC;           //ADC控制寄存器
sfr ADC_RES     =   0xBD;           //ADC高8位結果
sfr ADC_RESL    =   0xBE;           //ADC低2位結果
sfr P1ASF       =   0x9D;           //P1口第2功能控制寄存器

#define ADC_POWER   0x80            //ADC電源控制位
#define ADC_FLAG    0x10            //ADC完成標志
#define ADC_START   0x08            //ADC起始控制位
#define ADC_SPEEDLL 0x00            //540個時鐘
#define ADC_SPEEDL  0x20            //360個時鐘
#define ADC_SPEEDH  0x40            //180個時鐘
#define ADC_SPEEDHH 0x60            //90個時鐘
回復

使用道具 舉報

ID:123289 發表于 2023-5-29 09:51 | 顯示全部樓層
學會自己解決問題。
查芯片手冊,就會知道'ADC_??應該是什么值了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕在线观看 | 亚洲最大福利网 | 欧美一区二区在线观看 | 亚洲社区在线 | 亚洲国产精品精华素 | 亚洲国产福利视频 | 日韩在线91 | 日本一二三区高清 | 欧美一区二区三 | 久久久久亚洲精品 | 99精品国产一区二区三区 | 91精品国产91久久久久久最新 | 中文字幕亚洲一区二区va在线 | 欧美日本在线观看 | 日本成人免费观看 | 日韩视频1 | 狠狠操电影 | 九九热在线观看 | 国产午夜亚洲精品不卡 | 国产精品色一区二区三区 | 亚洲视频在线观看 | 成人免费视频网站在线看 | 日韩精品视频在线免费观看 | 99精品欧美一区二区三区综合在线 | 精品精品视频 | 中文字幕不卡一区 | 亚洲精品www.| 伊人网站 | 久久精品亚洲欧美日韩精品中文字幕 | 波多野结衣一区二区三区在线观看 | 一区二区在线免费观看 | 精品久久久久久中文字幕 | 天天干天天玩天天操 | 国产精品亚洲精品 | 天天综合网天天综合 | 亚洲精品视频三区 | 午夜精品一区二区三区在线观看 | 亚洲免费在线 | 中文字幕欧美日韩 | 天天干国产 | 国产日韩欧美在线 |