您的位置:首页单片机合泰单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

Ht47AD转换器应用

[日期:2008-01-16 ] [来源:合泰 作者:] [字体: (投递新闻)


Ht47AD转换器应用

include ht47c20.inc
data .section 'data'
Rs equ 0064h
n db ?
count db ?
kh db ?
kl db ?
th db ?
tl db ?
int_count db ?
;----------------------------
code .section at 0 'code'
 org 00h
 jmp start
 org 04h
 reti
 org 08h
 reti
 org 0ch
 reti
 org 10h
 jmp t_int
;----------------------------
start: clr intc0
 clr intc1
 clr adcr
 set adcr.1  ;A/D转换允许
 mov a,0fh  ;TIMER A计数系统时钟
 andm a,tmrc
 set adcr.4  ;TIMER B计数传感器电阻-参考电容
 set adcr.5
 clr acc  ;定时/计数器初值
 mov tmral,a
 mov tmrah,a
 mov tmrbl,a
 mov tmrbh,a
 clr int_count ;中断次数计数器
 set tmrc.4  ;开定时/计数器
 set intc1.0  ;定时/计数器中断允许
 set intc0.0  ;总中断允许
 jmp $
;----------------------------
t_int: inc int_count ;定时/计数器中断服务子程序
 mov a,int_count ;中断次数判断
 mov count,a
 sdz count
 jmp next
 jmp int1
next: sdz count
 jmp int3
 jmp int2
;----------------------------
int1: mov a,tmrbh  ;第一次中断
 mov kh,a  ;读取TIMER B的值,记为KRT0CS
 mov a,tmrbl
 mov kl,a
 clr n
 clr tblp
scan_tab:   ;查表,确定n的值
 tabrdl acc
 sub a,kl
 mov a,tblh
 sbc a,kh
 inc n
 inc tblp
 sz c
 jmp scan_over
 jmp scan_tab
scan_over:
 dec n
 ;----------
 ;mov a,08h
 ;subm a,n
 ;----------
 mov a,high Rs
 mov kh,a
 mov a,low Rs
 mov kl,a
 mov a,n
 mov count,a
 sz count  ;判断n是否为0
 jmp div  ;n不为0,则进行除法操作
 jmp div_over ;n为0,则不进行除法操作
div: clr c  ;除法操作
 rrc kh
 rrc kl
 sdz count
 jmp div
div_over:
 clr acc  ;TIMER A计数初值为0
 mov tmral,a
 mov tmrah,a
 mov a,0ffh  ;TIMER B计数初值为65536-KRTCS
 sub a,kl
 mov tmrbl,a
 mov a,0ffh
 sub a,kh
 mov tmrbh,a
 set adcr.0  ;TIMER B溢出作为中断
 set tmrc.4
 reti 
;----------------------------
int2: mov a,tmrah  ;第二次中断
 mov th,a  ;读取TIMER A的值,记为T0
 mov a,tmral
 mov tl,a
 clr adcr.0  ;TIMER A溢出作为中断
 clr adcr.5  ;TIMER B计数参考电阻-参考电容
 mov a,0ffh  ;TIMER A计数初值为65536-T0
 sub a,tl
 mov tmral,a
 mov a,0ffh
 sub a,th
 mov tmrah,a
 clr acc  ;TIMER B计数初值为0
 mov tmrbl,a
 mov tmrbh,a
 set tmrc.4
 reti
;----------------------------
int3: mov a,tmrbh  ;第三次中断
 mov kh,a  ;读取TIMER B的值,记为KRSCS
 mov a,tmrbl
 mov kl,a
 mov a,n
 mov count,a
 sz count  ;判断n是否为0
 jmp mul  ;n不为0,则进行 乘法操作
 jmp mul_over ;n为0,则不进行乘法操作
mul: clr acc  ;乘法操作
 rlc kl
 rlc kh
 sdz count
 jmp mul
mul_over:
 call display
 clr adcr.0  ;TIMER A溢出作为中断
 set adcr.5  ;TIMER B计数传感器电阻-参考电容
 clr acc  ;定时/计数器初值
 mov tmral,a
 mov tmrah,a
 mov tmrbl,a
 mov tmrbh,a
 clr int_count ;清除中断次数计数器
 set tmrc.4
 reti
;----------------------------
display proc   ;显示子程序
 ret
display endp
;----------------------------
 org 700h
tab: dc 100h,200h,400h,800h,1000h,2000h,4000h,8000h,0ffffh

;------------------------------------------------------------

include ht47c20.inc
data .section 'data'
count1 db ?
count2 db ?

code .section at 0 'code'
 org 00h
 jmp start
 org 04h
 reti
 org 08h
 reti
 org 0ch
 reti
 org 10h
 jmp ad_int
;---------------------------------
start:
 clr intc0
 clr intc1
 mov a,0fh
 andm a,tmrc
 mov a,32h
 mov adcr,a
 clr acc
 mov tmral,a
 mov tmrah,a
 mov tmrbl,a
 mov tmrbh,a
 set tmrc.4
 set intc1.0
 set intc0.0
 jmp $
;---------------------------------
ad_int: mov a,tmrbh
 mov count1,a
 mov a,tmrbl
 mov count2,a
 call calculate
 reti
;---------------------------------
calculate proc

 ret
calculate endp
;---------------------------------

 

 

阅读:
录入:JETTA

推荐 】 【 打印
上一篇:HT47蜂鸣器应用
下一篇:HT47I_O口应用
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐