新唐N76E003AT20 多通道ADC採集方法

2021-08-18 16:59:19 字數 1193 閱讀 2975

不得不說n76e003的功能在8051核心微控制器中功能已經是非常強大了,並且官方開提供了bsp 開發庫,這些都是可以直接在官網中直接找到的。對於n76e003的adc,因為作者沒有用過很早之前的版本,作者使用的時候官方已經提供了vbg反推vdd的例程,但是這種做法還是有一些缺陷,因為內部的乘除法運算對於乙個8位的微控制器來說還是有一定的困難的。但是在實際專案中應該都是需要使用到多個通道輪流採集的情況,所以,在此貼出本人寫的在多個通道輪流採集的方法。

if(adc_band_gap_voltage_msk==gadcactivingchannel)

;if(adc_work_mode_loading_voltage_msk ==gadcactivingchannel)

;if(adc_b_loadind_msk ==gadcactivingchannel)

;clr_adcf;

set_adcs;

if(adcf==1||adcs==0)

{switch(gadcactivingchannel)

{case adc_band_gap_voltage_msk:

gvbgadcresult = (adcrh<<4) + adcrl;//獲取adc的取樣值

clr_adcen;

gadcactivingchannel=adc_work_mode_loading_voltage_msk;//跳轉到下乙個通道

break;

case adc_work_mode_loading_voltage_msk:

gadcloadingvoltresult1=(adcrh<<4)+adcrl;

clr_adcen;

gadcactivingchannel=adc_b_loadind_msk;

break;

case adc_b_loadind_msk:

gadcbloadingvolt=(adcrh<<4)+adcrl;//讀取該通道轉換的值

clr_adcen;

default:

gadcactivingchannel=adc_band_gap_voltage_msk;

官網的例程除去用中斷的方式都是使用while()輪詢等待,這樣勢必造成阻塞,上面的方法通過去判斷adc轉換是否完成進行輪詢,如果完成就進入讀取該通道的值,如果沒有完成則不讀取。

本人水平有限,如果有不足之處還望各位高手支出,或者你有更好的想法也可以交流討論。

新唐N76E003 GPRS 串列埠亂碼故障排除手記

目錄 設計目的 讀取imei號碼出現亂碼故障 嘗試解決方法 懷疑1 微控制器引數配置錯誤 懷疑2 gprs與n76e003介面電平相容問題 懷疑3 電磁相容 射頻干擾問題 暫時處置方法 最終解決方法 修改串列埠傳送函式 原有的串列埠傳送函式 微控制器採用n76e003,gprs模組採用air208,...

新唐N76E003指標指向錯誤問題

問題描述 如下 p指向的資料並不是28 char data p char xdata dat 28 p dat 解決方案1 char data p char data dat 28 p dat 解決方案2 char data p char xdata dat 28 p dat 知識點 c51的指標型...

N76E003紅外解碼程式

最近學習了網上的紅外解碼程式儲存學習一下 使用的是n76e003晶元 借鑑了好多地方 只是簡單的啟動led燈 使用的是日本 nec協議 外部定時器中斷1 定時器模式2,8位自動重灌 256步溢位一次 16m晶振 判斷語句那裡自己集合了好多想了乙個案例 定義乙個16位數字 將 的使用者碼反碼和鍵碼正碼...