|
|
HOLTEK仿真器简介 |
可以在触发前面或后面跟踪记录。
可以设置触发条件。
最大可以设置20个断点。
可以检测所有寄存器。
直接输入信号控制。
可以单步执行和跳过程序控制。 | |
HT46R23A/D转换子程序
| 深圳市凌雁电子有限公司 |
HT46R23是台湾合泰公司推出的10位A/D转换器的高性能8位单片机,它具备齐全的功能:3.3-5.5V的工作电压范围,4kx15bit的程序只读存储器,192x8位数据存储器,16位7级预分频带溢出中断功能可编程定时/计数器,石英和RC振荡器,WDT电路,8/4通道的A/D转换器,8级堆栈,两路PWM(脉宽调制)硬件电路,大部分的RAM都可以执行位操作指令,15位查表指令,这为程序的编写提供极大的便利。所有的指令都为1-2个指令周期,I2C BUS总线,63条功能强劲的精简指令集。它有两种封装形式,一种是24条引脚的封装(24kSKDIP-A/SOP-A),还有一种是28条引脚封装(28kSKDIP-A/SOP-A),除了双向I/O口线的数量不同外,其它性能基本一致。
其主要功能特性如下:
|
△ 工作电压:3.3-5.5V |
△ 一个外部输入(与I/O口复用) |
△ 23/19条8位双向I/O口线 |
△ VDD=5V,时钟为8MHz时指令周期0.5us |
△ 16位带7级预分频的可编程定时/计数器 |
△ 一个内置晶体和RC振荡器 |
△ 4kx15 bit 程序存储器 |
△ 看门狗(WDT)电路 |
△ 192x8内部RAM |
△ 支持发声的PFD |
△ 8通道A/D转换器 |
△ 大部分RAM均可执行位操作 |
△ 15位查表指令 |
△ 8级堆栈 |
△ 两路PWM输出通道 |
△ I2C BUS 总线 |
△ 低电压复位功能 |
△ 所有指令均为1-2个指令周期 |
△ 63条精简指令集 |
△ 暂停和唤醒功能 |
|
|
| |
HT46R23内部方框图如图2,其中含有8通道10bitA/D(精度为9位)的转换器,它的引脚为PB0(AN0)—PB7(AN7),其参考电压为VDD。与A/D转换有关的寄存器有4个,它们是:ADRL(地址是24H),ADRH(地址是25H)ADCR(其地址是26H)和ACSR(地址为27H)。ADRL和ADRH是AD转换结果的低字节和高字节数据寄存器,属只读存储器。AD转换完成后,即可从这两个存储器读取AD数据。ADCR是A/D转换控制寄存器,用来定义A/D转换器的工作状态,包括A/D转换的通道、选择模拟输入端、A/D转换开始和结果标志等。需进行A/D转换,要求先设置PB端口,选择转换的模拟通道,然后给START位一个启动信号即开始A/D转换。A/D转换结果后,EOC为被清零,并且产生A/D转换中断(假设A/D转换允许的话)。ADSR是A/D时钟控制寄存器,用于选择A/D的时钟源。
上面我们说过,ADCR是A/D转换控制寄存器,ADCR的第0——2共三个位是用于选择模拟输入通道,HT46R23共有8个通道可以选择。ADCR的第3——5三个位用于设置PB口的工作模式,使PB端口既可以当作普通I/O端口,也可以用于模拟输入通道。ADCR的第六位EOC是A/D转换结束的状态标志位,通过查询这个标志位即可了解A/D转换过程是否已经结束。ADCR的START位是用来启动A/D转换的,给START控制位一个上升沿和一个下降沿信号(即0→1→0),A/D转换开始,为确保A/D转换可靠地工作,START位在启动完成后,应保持为“0”。
下表是ADCR控制寄存器功能说明。
|
表1 ADCR控制寄存器功能特性列表 |
符号(ADCR) |
位 |
功能说明 |
ACS0 |
0 |
模拟输入通道选择位,其定义特性见表2 |
ACS1 |
1 |
ACS2 |
2 |
PCR0 |
3 |
设置PB口的工作状态,其定义特性见表2 如果PCR0,PCR1及PCR2都为0,则A/D转换电路被关闭。 |
PCR1 |
4 |
PCR2 |
5 |
EOC |
6 |
A/D转换结果标志位,EOC=0,A/D转换结束 |
START |
7 |
A/D转换启动控制位 0→1→0,转换开始 0→1A/D0→1转换结束 |
表2 ADCR模拟通道选择列表 |
ACS0 |
ACS1 |
ACS2 |
模拟通道 |
0 |
0 |
0 |
A0 |
0 |
0 |
1 |
A1 |
0 |
1 |
0 |
A2 |
0 |
1 |
1 |
A3 |
1 |
0 |
0 |
A4 |
1 |
0 |
1 |
A5 |
1 |
1 |
0 |
A6 |
1 |
1 |
1 |
A7 |
表3 PB口设置列表 |
PCR0 |
PCR1 |
PCR2 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
PB7 |
PB6 |
PB5 |
PB4 |
PB3 |
PB2 |
PB1 |
PB0 |
0 |
0 |
1 |
PB7 |
PB6 |
PB5 |
PB4 |
PB3 |
PB2 |
PB1 |
A0 |
0 |
1 |
0 |
PB7 |
PB6 |
PB5 |
PB4 |
PB3 |
PB2 |
A1 |
A0 |
0 |
1 |
1 |
PB7 |
PB6 |
PB5 |
PB4 |
PB3 |
A2 |
A1 |
A0 |
1 |
0 |
0 |
PB7 |
PB6 |
PB5 |
PB4 |
A3 |
A2 |
A1 |
A0 |
1 |
0 |
1 |
PB7 |
PB6 |
PB5 |
A4 |
A3 |
A2 |
A1 |
A0 |
1 |
1 |
0 |
PB7 |
PB6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
1 |
1 |
1 |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
ACSR的第7位是内部测试用的,用户不能使用。ACSR的第0位和第1位是用于选择A/D转换的时钟源。
当A/D转换结束时,A/D中断标志被置位,当START控制位由“0”置“1”时,EOC也置“1”。
值得一提的是,HT46R23是10位A/D转换器的单片机,它需用两个8位寄存器来存储A/D结果,其中ADRH存储的是高8位转换结果(8位全有效),而ADRL只记录10位中的低2位,且仅bit7和bit6有效,其余bit5-bit0是无效的。这使用中加以注意,数据结构如表4所示。
|
表3 PB口设置列表 |
数据寄存器 |
bit7 |
bit6 |
bit5 |
bit4 |
bit3 |
bit2 |
bit1 |
bit0 |
ADRH |
D9 |
D8 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
ADRL |
D1 |
D0 |
- |
- |
- |
- |
- |
- |
|