data .section 'data' ;数据段 这样的写法是比较标准的整齐的汇编写法,就是告诉你这段就是定义变量 和REGISTER 等.现在好多人定义这些都是放在INC文件里就可以的了.
code .section at 0 'code' 这个就是告诉你下面这段就是单片机的碧册巧程式姿散了.
子程式里proc 是子程式开始,endp就是子程式的结束,其实现在好多人 直接写子程式名就可以的了. 好像 sub: ret
sdz 是 register 自减1, 如果为0 就是跳过下一条指令,一悔键般的用法是
SDZ R
JMP LOOP
$
1. 下载合泰单片机编译烧录软碧仿件:STVP;2. 将单片机插入STVP烧录软件安装的 USB 接口,连接电脑;
3. 启动 STVP 烧录软件,在烧录软件工具栏中打开对应的单片机类型,选择单片机型号;
4. 将用编译器编译生成的 .hex 文件导入到烧录软件,点击烧录按钮;
5. 等待烧录完成,烧录完成悔物纤后,拔出合泰单蚂御片机,即可完成烧录。
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//在绝对地址定义变量
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)