⑴ 单片机左移为什么要一位呢
(1)刚开始x=0;左移一位还是零,然后|SDA
假设sda=1;则x=0000 0001
for循环i=1;x再左移一位 x=0000 0010 再|sda 假设sda=1;则x=0000 0011
i循环8次,正好读八次sda送入i
(2)因为是串行通信 一根数据线一次只能读写一位
⑵ 单片机计数初值的计算
呵呵 正确为你解答:
1 可以按定时时间的计算公式, 计算出定时器的时间常数X:
定时时间T=(2的N次方-X)12/单片机晶振频率
2 N为定时器的工作方式:
方式0时,N=13
方式1时,N=16
方式2时,N=8
3 根据定时时间和工作方式,计算出时间常数X
把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。
例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ
则 定时时间T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H
⑶ 单片机C语言编程中scon=0x50中的x是什么意思
scon=0x50中,0x50是一个整体,这时C语言整型常量的一种表示方法。代表该值为16进制。
C语言中以0x开始,后续接若干个字符,字符范围在0~9,A~F之内,不区分大小写,这种情况为16进制表示,代表值为对应的16进制值。
0x50就是16进制的50,也就是二进制10010000, 10进制的80。