51单片机学习总结(1)

我学习的是STC89C52单片机,以下是我目前阶段的学习总结

相对于80C51单片机,STC89C52单片机多了一些功能

1.定时器有3个,增加了看门狗定时器

2.RAM和ROM容量增加

3.引脚:

对于储存器

单片机的存储区域有程序储存器(ROM)和数据储存器(RAM)两种,由于51单片机程序存储器和数据存储器是独立编址的。且两种存储器都可以选择使用片内的还是片外的存储器,因此在物理上有4个存储空间,但逻辑上只有3个存储空间,因为程序存储器片内和片外是统一编址的。他们的储存空间在汇编语言中访问的指令都不一样:片内、片外统一64B程序储存器地址空间;而数据储存器片内是256B、片外是64KB储存空间

对于sfr和sbit代码

我认为在电路板中已经做好了固定的电路和连接方式,但是寄存器只能通过地址来访问,而sfr指令的作用就是将这些寄存器进行命名,这样我们就可以不用刻意去记各个寄存器的地址,使用起来方便许多;同样,指令sbit就是对可以按位操作的位进行命名

在keil5中,我们通常会在开头加上#include <REGX52.H>,内部大多是寄存器的命名,如

对于数码管

P0_0到P0_7控制数码管的a~g的显示,由于4个数码管的另一端使用一个公共端,所以我们想要让两个数码管同时显示时,需要用到一个delay1ms,在这里我理解为达到一个视觉错觉的效果,让我们认为它是同时点亮的delay函数如下:

void Delay(int x)
{
    unsigned char data i, j;
while(x)
{
    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
    x=x-1;
}
}

(单位为ms)

将数码管写成一个模块在后续的使用中会方便许多,就像这样(我的函数名叫guan):

对于矩阵键盘

相对于独立按键,矩阵键盘这里使用了8个I/O口,这样可以大大减少I/O口的占用,这种方式也是十分巧妙的,使用的I/O口的数量=原数量开根号*2;对于矩阵键盘的使用,我们采用按列扫描的方法来实现(当然也可以按行扫描):

对于定时器:

我使用的单片机晶振是11.0592MHz的,它的时钟周期(振荡周期)为1/11.0592Mhz,机器周期=12*时钟周期,它的值大约是1.09us,以下为每秒实现一次中断的模块(这里我用作使用数码管实现计时的功能):

以上是我近期的学习内容,后续会进行补充

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhh3708

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值