
data section 'data' ;数据段 这样的写法是比较标准的整齐的汇编写法,就是告诉你这段就是定义变量 和REGISTER 等现在好多人定义这些都是放在INC文件里就可以的了
code section at 0 'code' 这个就是告诉你下面这段就是单片机的程式了
子程式里proc 是子程式开始,endp就是子程式的结束,其实现在好多人 直接写子程式名就可以的了 好像 sub: ret
sdz 是 register 自减1, 如果为0 就是跳过下一条指令,一般的用法是
SDZ R
JMP LOOP
$
1怎样用软件设置:CMOSE输出,带或不带上拉电阻的斯密特触发输入,A/D输入????
输出就是输出,什么"CMOS输出"是Holtek官方术语,"斯密特触发输入"也是官方术语,带不带上拉电阻是在IDE掩膜选项中设置的
引脚是AD输入还是数字IO靠ADCR中的控制位来定义
2怎样理解ADCR中的前六位设置???当设置好模义输入通道,为什么还要定义PB呢????
这是HT46R52的ADCR 参考(估计HT46R22是一样的):
0 ACS0 选择模拟输入通道
1 ACS1 选择模拟输入通道
2 ACS2 选择模拟输入通道
3 PCR0 为0 则关闭,减小功耗
4 PCR1 为0 则关闭,减小功耗
5 PCR2 为0 则关闭,减小功耗
6 EOC A/D 转换结束标志(0:A/D 转换结束)
每次bit3-5 状态的改变后都必须通过START 信号来初始化A/D 转换器,
否则EOC可能会处于不确定状态
7 START 0→1→0:开始; 0→1:A/D 转换复位并且置EOC为“1”
“当设置好模义输入通道,为什么还要定义PB呢????”
前面0-2只是个通道选择(多选1模拟开关),并不能决定PB口是模拟口还是数字IO
就像有一块内存空间,你选中了一个字节来用,但里面的内容到底什么不知道,设置一下就知道了。
3端口问题:
1控制寄存器:设定IO口是输入还是输出,数据寄存器(端口寄存器)读取/设置端口电平
2设_pac=0b00000000;意思是pa口全部输出;设_pa= 0b00000000;则pa全部输出0
3初始化端口的步骤示例:_pac=0x00; _pa=0x00;
4其他问题:
#pragma vector isr_time @ 0x08 //中断服务程序定义
#pragma vector isr_ad @ 0x0c //中断服务程序定义
uchar sign0 @ 0x40; //在绝对地址定义变量
uchar sign1 @ 0x41; //在绝对地址定义变量
12位的寄存器,怎么可能大于4095! 假如你用的是双字节的变量Value来存储结果,那么读寄存器取值出来后需要屏蔽掉13位之后的数据,即: Value= Value & 0xFFF 。至少不会出现4300的情况。
以上就是关于合泰单片机汇编问题全部的内容,包括:合泰单片机汇编问题、敬爱的合泰单片机高手!!!!!!!、合泰单片机我编写了个采ad值的程序,ad值是采出来了,可是ad值范围整体偏移,AD12位精度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)