历史上的今天
今天是:2025年01月26日(星期日)
2018年01月26日 | Ht47AD转换器应用
2018-01-26 来源:eefocus
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
;---------------------------------
上一篇:HT47I_O口应用
下一篇:HT47蜂鸣器应用
史海拾趣
|
MMA7455加速度传感器相关资料(附玩MMA7455一周有感) replyreload += \',\' + 367627; 本想做出点东西来后再发表的,不过现实总是残酷的,都一周了还没做出来,没作品分享,就只能分享些资料了。(无奈一下~呵呵) 注:以下隐藏内容为本人废话 ...… 查看全部问答> |
|
用s3c2410实验板做SD卡实验,在写卡的时候出现了问题,希望SD卡高手能指点一下,谢谢 我在做三星2410实验板上做SD卡试验,做到写卡的时候出现了错误,具体是这样 的,程序运行到下面这个if语句的时候就死循环了,之前卡的初始化都是成功的,在这死循环了,这段代码的作用是往卡数据寄存器里面写入发送缓冲区的数据,有高 ...… 查看全部问答> |
|
如下 //我传递了一个类对象的指针近进来 LoadForm(CFormInfo *pInfo) { //此时pInfo 值为0x1a04fd84 //-------------- R_Form_Info finfo; memset(&finfo,0,sizeof(R_Form_Info)); m_RF.Seek(nFor ...… 查看全部问答> |
|
zstack-CC253002.3.0如何同时使用两个串口?我试过了,不行! 我在编译选项中,定义ZTOOL_P1和ZAPP_P2。默认串口0使用DMA方式,串口1使用中断方式。但发现有两个函数根本就没有实现,查遍了整个工程文件也没有找到。这两个函数分别是_hal_uart.c中的HalUARTInitISR(void)函数和HalUARTPoll(void)。我个人认为这 ...… 查看全部问答> |
|
我在EDK中用microblaze实现的功能是好的,下载到板子上也正确,但是把EDK作为ISE的子模块后,就没反应了。就是说,microblaze的引脚用和FPGA引脚相连接,功能能实现,若microblaze的引脚和FPGA内部网络连接,功能不能实现,好像是microblaze用FPGA ...… 查看全部问答> |




