微控制器中SDZ是什麼意思 合泰微控制器ADC轉換程式

2021-10-19 23:33:36 字數 4531 閱讀 4465

;內容:旋轉變阻器改變ad轉換的數通過4為led顯示出來

;數碼管段碼接法a-pd0,b-pd1....g-pd6,h-pd7

;數碼管位碼接法om0-pc0...com4-pc3

;;ad輸入腳-pa0

include ht66f50.inc

org 0000h

jmp a1

org 0014h ;多功能中斷入口位址

jmp zd1

org 1ch  ;adc中斷入口位址

jmp isr_adc

org 0030h

q1:dc 03fh ; 0

dc 006h ; 1

dc 05bh ; 2

dc 04fh ; 3

dc 066h ; 4

dc 06dh ; 5

dc 07dh ; 6

dc 007h ; 7

dc 07fh ; 8

dc 06fh ; 9

dc 077h ; a

dc 07ch ; b

dc 039h ; c

dc 05eh ; d

dc 079h ; e

dc 071h ; f

a1:clr [98h] ;ad資料高8位儲存器

clr [99h] ;ad資料低8位儲存器

mov a,0 ;顯示內容

mov [8ah],a ;第一位數碼管段碼顯示內容暫存器

mov a,0 ;顯示內容

mov [8bh],a ;第二位數碼管段碼顯示內容暫存器

mov a,0 ;顯示內容

mov [8ch],a ;第三位數碼管段碼顯示內容暫存器

mov a,0 ;顯示內容

mov [8dh],a ;第四位數碼管顯示內容暫存器

mov a,08h ;跟cp1c暫存器設定要求選擇資料

mov cp1c,a ;設定pc口為i/0口而不是中斷口

clr pbc ;設定pc 口為輸出口

clr pdc ;設定pd 口為輸出口

mov a,1 ;設定初始顯示位碼顯示第一位

mov [80h],a ;位碼暫存器

mov a,8ah ;設定對應第一位段碼暫存器

mov mp0,a ;間接暫存器指標

mov a,00000000b ;設定tm2 計數時鐘位為fsys/4

mov tm2c0,a

mov a,11000001b ;設定tm2中斷為定時/計數模式選擇比較器a匹配

mov tm2c1,a

mov a,low  5000 ;設定中斷時間為5000個時鐘週期

mov tm2al,a ;低8位

mov a,high 5000 ;設定中斷時間為5000個時鐘週期

mov tm2ah,a ;高8位

mov a,00010000b ;開啟ad電源 並adrfs=1

mov adcr0,a ;adrh為bit 3~bit 0,adrl為bit 7~bit 0

mov a,00000110b ;ad轉換時鐘為fsys/64,

mov adcr1,a ;vrefs=0選擇內部參考電壓

mov a,00000001b ;選擇ad通道為an0

mov acerl,a

clr   start     ; 啟動ad轉換 0→1→0 啟動

set   start   ;

clr start   ;

clr adf ;清標誌

set ade ;開ad中斷

clr mf0f ;清多功能中斷0標誌

clr t2af ;清定時器2較器a中斷標誌

set mf0e ;使能多功能0中斷

set t2ae ;使能定時器2較器a中斷

set emi ;使能總中斷

set t2on ;開始計數

a2:call cl1 ;呼叫2位16進製制數轉換為5位10進製數子程式

mov a,[9dh] ;顯示內容

mov [8ah],a ;第一位數碼管段碼顯示內容暫存器

mov a,[9ch] ;顯示內容

mov [8bh],a ;第二位數碼管段碼顯示內容暫存器

mov a,[9bh] ;顯示內容

mov [8ch],a ;第三位數碼管段碼顯示內容暫存器

mov a,[9ah] ;顯示內容

mov [8dh],a ;第四位數碼管顯示內容暫存器

jmp a2

;2位16進製制數轉換為5為10進製數子程式(0ffh=65535)

cl1:

mov a,[98h]

mov [9ah],a

mov a,[99h]

mov [9bh],a

call cl2

mov a,00001111b

and a,[9eh]

mov [9ah],a

swap [9eh]

mov a,00001111b

and a,[9eh]

mov [9bh],a

mov a,[9ch]

mov [9eh],a

mov a,00001111b

and a,[9dh]

mov [9ch],a

swap [9dh]

mov a,00001111b

andm a,[9dh]

retcl2:

clr [9ch]

clr [9dh]

clr [9eh]

mov a,16

mov [9fh],a

cl3:

clr c

rlc [9bh]

rlc [9ah]

mov a,[9eh]

adc a,[9eh]

daa [9eh]

mov a,[9dh]

adc a,[9dh]

daa [9dh]

mov a,[9ch]

adc a,[9ch]

daa [9ch]

sdz [9fh]

jmp cl3

ret; 中斷服務子程式

zd1:

mov [0f0h],a ;壓棧acc到0f0h

mov a,status ;

mov [0f1h],a ;壓棧status標誌暫存器到0f1h

clr pb ;清pc(清螢幕)

mov a,q1 ;資料表位址

clr tbhp ;清資料表位址高位否則出錯

add a,iar0 ;利用間接暫存器找到要顯示段碼所在資料表的位址

mov tblp,a ;**指標暫存器tblp

tabrd pd ;查表並將資料存到pd口暫存器

mov a,[80h] ;位碼暫存器

mov pb,a ;將位碼暫存器的數存到pc口暫存器

;段碼和位碼的數都有了所以數碼管被點亮

inc mp0 ;間接暫存器指標加1指向下乙個段碼暫存器

rl [80h] ;左移位碼暫存器控制下乙個數碼管

snz [80h].5 ;判斷是否控制完4個數碼管

jmp zd2 ;退出中斷繼續

mov a,1 ;是則從新初始化暫存器資料

mov [80h],a ;

mov a,8ah ;千位數碼管對應暫存器

mov mp0,a ;存到間接暫存器0

zd2:

mov a,[0f1h] ;彈棧後進先出先進後出

mov status,a ;彈棧0f1h的數到標誌暫存器

mov a,[0f0h] ;彈棧0f0h的數到acc

clr mf0f ;清多功能標誌

clr t2af ;清定時器2比較器a標誌

reti ;中斷返回

isr_adc:

mov [0f0h],a ;壓棧acc到0f0h

mov a,status ;

mov [0f1h],a ;壓棧status標誌暫存器到0f1h

mov a,adrh

mov [98h],a

mov a,adrl

mov [99h],a

mov a,[0f1h] ;彈棧後進先出先進後出

mov status,a ;彈棧0f1h的數到標誌暫存器

mov a,[0f0h] ;彈棧0f0h的數到acc

clr   start       ;high pulse on start bit to initiate conversion

set   start   ;reset a/d

clr start     ;start a/d

reti ;中斷返回

; 延時子程式

m001:

mov a,1

mov [85h],a

m002:

mov a,200

mov [86h],a

m003:

mov a,250

mov [87h],a

m004:

sdz [87h]

jmp m004

sdz [86h]

jmp m003

sdz [85h]

jmp m002

retend

合泰微控制器做電壓表 合泰微控制器總結

1 合泰微控制器總結 測試環境c編譯器v21.debug2.3.陣列,支援一維 二維陣列 大小小於1 bank 4.使用const關鍵字,變數將儲存於程式儲存區,如,const uint8 t tab 1,2,3 5.中斷服務函式 pragma vector isr tmr0 0x0c 定義中斷入口...

合泰微控制器AD轉換Adc Init c

a d 轉換步驟 下面概述實現a d 轉換過程的各個步驟。步驟1 通過adcr1 暫存器中的adck2 adck0 位,選擇所需的a d 轉換時鐘。步驟2 清零adcr0 暫存器中的adoff 位使能a d。步驟3 通過adcr0 暫存器中的acs2 acs0 位和adcr1 暫存器中的acs4,選...

51微控制器(2) 微控制器是什麼

1.什麼是ic?ic integrated circuit 積體電路,就是用微器件為積木,去搭建乙個具備一定功能的電路板。以前沒有微器件的時候,需要用很大的電路板才能實現乙個功能,微器件可以小到mm甚至nm級別,把這些電路做在一起,用塑料外殼封裝起來就形成了ic晶元,用的是半導體工藝。2.什麼是cp...