
51单片机的学习心得(普中开发板)
mc10141222
心外无物
展开
-
波特率与定时器初值的关系
波特率即一秒传送多少位(bit)串口通信需要设置波特率,方式0跟方式2的波特率是不可变的,方式1跟方式3的波特率可变方式0的波特率=fosc/12方式1的波特率=(2^SMOD/32)*(T1溢出率)方式0的波特率=(2^SMOD/64)*fosc方式0的波特率=(2^SMOD/32)*(T1溢出率)其中fosc为晶振的频率,SMOD为PCON寄存器的最高位,决定波特率是否加倍。而溢出率是指溢出所用时间的倒数,比如12mhz晶振的单片机,定时器从零开始到溢出用时65535us原创 2021-11-24 20:51:03 · 1668 阅读 · 0 评论 -
char类型为什么是-128到127之我见
最近的学习对一个点一直有疑问,为什么char类型范围是-128到127而不是-127到127综合看了网上一些老哥的解释后,我自己总结得是这样的:127这个很容易理解,因为最高位表示符号位,那么正的char最大就是0111 1111自然就是127但到负数,就涉及到一个补码的东西,1111 1111应该表示的是-127,其补码为1000 0001;那么1000 0000应该表示什么呢,这直观看起来就是-0,那+0就是0000 0000;且看1000 0000的补码是0000 0000 这原创 2021-11-19 21:55:45 · 900 阅读 · 0 评论 -
static的意思
即为静态局部变量,静态局部变量和普通局部变量一样,只能在定义它的函数里面使用它。普通局部变量在程序退出函数以后,就会释放,静态局部变量则不会被释放,它在整个生命周期都存在。下次读到是上次修改后的值。...原创 2021-11-16 21:10:30 · 227 阅读 · 0 评论 -
if跟else if使用上的易忽略点
今日写了个程序,有个地方疏忽了要用else if 导致出现了错误就是在一个模式选择的地方if(mode==0){mode=1;xx}if(mode==1){mode=0;xx}应当注意到,如果这样子的话那么实际上运行下去,mode一直都是0,并没有在0和1之间变换的效果所以下面那个if应该改为else if...原创 2021-11-16 00:36:51 · 426 阅读 · 0 评论 -
对十进制转十六进制(特别取高八位)的理解
例如一个十进制数64580想转化为十六进制并赋定时器的低八位和高八位给TL0,TH0那么高八位TH0就等于64580/256低八位TL0就等于64580%256在这里我用一个类比的方法去想的,比如一个十六进制数0001 1001即0x19想取出其高四位(即0x19中第二位)则等于0x19/16,所以上面那个要取高八位那么就应该除两次16,相当于除以256.用十进制去类比也是一样,我十进制的数如16想取十位,那么就要除以10,而取百位就要除以两遍的10....原创 2021-11-15 16:19:45 · 3267 阅读 · 0 评论 -
51单片机初学者对定时器/计数器寄存器的理解
画了张导图,记录一下顺带记录下,static表示静态变量原创 2021-11-07 23:11:21 · 203 阅读 · 0 评论