IAP_ADDRL与IAP_ADDRH是单片机内部的两个八位的特殊功能寄存器,分别用来寄存地址的低八位与高八位,而addr是一个16位的无符号整型变量(用以存放地址数据)
下面是两个寄存器的赋值语句(IAP_ADDRL与IAP_ADDRH 已声明为特殊功能寄存器)
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
我的问题是,当一个十六位数直接赋值给一个八位的寄存器时,寄存器只会保留低八位吗?同理将一个十六位的数赋值给一个八位的变量时情况是不是一样?
希望大家能帮忙解答一下,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你这个问题是C语言里一个很基本的问题,不同长度类型的变量互相赋值的问题,如果记不得了去翻书吧。
用sfr16定义寄存器,可以一条语句解决你的赋值问题。原因就不解释了,想知道的话自己翻书去。
一周热门 更多>