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

QQ登錄

只需一步,快速開始

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

求助stc15單片機(jī)內(nèi)置ADC的使用問(wèn)題

[復(fù)制鏈接]
ID:691449 發(fā)表于 2022-1-15 15:43 | 顯示全部樓層 |閱讀模式
5黑幣
本帖最后由 xianming 于 2022-1-15 15:44 編輯

想利用STC15上的ADC功能做一個(gè)示波器,剛開始測(cè)試ADC就出了一大堆問(wèn)題。
因?yàn)槭静ㄆ餍枰B續(xù)取樣,以及主程序需要響應(yīng)按鈕控制,所以我用了中斷方式,自己改了STC的范例程序,然而中斷并沒(méi)有成功。
目前的問(wèn)題是設(shè)置了程序,但根本不會(huì)中斷


問(wèn):?jiǎn)纹瑱C(jī)中斷有什么經(jīng)驗(yàn)嗎?如果想同時(shí)使用兩個(gè)中斷,比如串口中斷和ADC中斷,該如何設(shè)置?直接設(shè)置ES、EADC、EA的話會(huì)沖突
放上一部分代碼
這是中斷處理程序:
  1. void adc_isr() interrupt 5 using 1
  2. {
  3.         ADC_CONTR &= 0xEF;
  4.         //if((ADC_CONTR&0x07) == 0x02)
  5.         //{
復(fù)制代碼
初始化ADC:
  1. void openADC(uchar port8)
  2. {
  3.         P1ASF = port8;
  4.         ADC_RES=0;
  5.         CLK_DIV&=0xDF;
  6.         ADC_CONTR=0xEA;

  7.         delayms(5);         
  8.         EADC=1;
  9.         EA=1;
  10.         
  11. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:691449 發(fā)表于 2022-1-15 15:45 | 顯示全部樓層
主程序:
  1.                   
  2. openADC(0xff);
  3.                  delayms(30);
  4.                   showADC=1;
  5.                
  6.                  while(1)
  7.                  {
  8.                  
  9.                  if(!showADC){
  10.                  
  11.                  displayADC();       
  12.                  delayms(10);
  13.                  showADC=1;}
  14.                  }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2022-1-15 21:38 | 顯示全部樓層

MCU有多種中斷功能,只是為使用者提供多種選擇。但中斷之間發(fā)送沖突時(shí)就需要權(quán)衡利弊有所取舍。用ADC為示波器取樣,雖然需要有連續(xù)性但不是完全必要。這就給其它功能模塊留有一定的時(shí)間。有多種方案可供選擇。比如分時(shí)交替工作,也可以把查詢串口放在ADC中斷中。也可以用定時(shí)器協(xié)調(diào)各模塊的工作。其實(shí)方法很多,要視具體應(yīng)用環(huán)境選擇?傊畣纹瑱C(jī)只是工具,怎么使用在于人的智慧。

評(píng)分

參與人數(shù) 1黑幣 +10 收起 理由
xianming + 10 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:691449 發(fā)表于 2022-1-18 22:30 | 顯示全部樓層
wulin 發(fā)表于 2022-1-15 21:38
MCU有多種中斷功能,只是為使用者提供多種選擇。但中斷之間發(fā)送沖突時(shí)就需要權(quán)衡利弊有所取舍。用ADC為示 ...

感謝大佬的回復(fù)!另外,我隨后又做了一些ADC的測(cè)試,發(fā)現(xiàn)ADC不太穩(wěn)定,感覺(jué)時(shí)好時(shí)壞。去掉其他中斷之后,把上文的代碼放到兩個(gè)工程里,可能有一個(gè)正常,另一個(gè)失敗。想問(wèn)一下大佬,單片機(jī)內(nèi)ADC受到其他因素這么大的影響是正常的嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表