找回密码
 立即注册
楼主: ge***

【 实验箱已收到】跟着冲哥学STC-学习心得

[复制链接]
  • TA的每日心情
    慵懒
    2024-3-4 10:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    1

    主题

    11

    回帖

    41

    积分

    新手上路

    积分
    41
    发表于 2024-2-23 17:00:47 | 显示全部楼层
    1,GPIO(general purpose input output)
    2,P(引脚)使用规则,P实际为一八位引脚用数字电路的表达形式为p[0..7],我们可以直接操作以整排引脚,也可以细分操作引脚下的“八位数字引脚”
    3,熟练使用阅读器翻阅资料
    4,新建工程-导入程序
    5,用于控制单独引脚的程序:sbit P00=p0^0 //选择P0.0引脚
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    回帖

    167

    积分

    注册会员

    积分
    167
     楼主| 发表于 2024-2-23 20:11:50 | 显示全部楼层
    wangziyi 发表于 2024-2-23 16:59
    第一章:
    单片机初稿
    什么是单片机:以硅晶圆为基底发展的高度集成可控制芯片。

    王兄,你咋发我这个帖子里啦?单独发个新帖吧
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-3-4 10:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    1

    主题

    11

    回帖

    41

    积分

    新手上路

    积分
    41
    发表于 2024-2-23 21:49:01 | 显示全部楼层
    第四章:
    1,GPIO(general purpose input output)
    2,P(引脚)使用规则,P实际为一八位引脚用数字电路的表达形式为p[0..7],我们可以直接操作以整排引脚,也可以细分操作引脚下的“八位数字引脚”
    3,熟练使用阅读器翻阅资料
    4,新建工程-导入程序
    5,用于控制单独引脚的程序:sbit P00=p0^0 //选择P0.0引脚


    C51中sbit/sfr用法分析
    参考文献原文(c51中sbit/sfr 用法_sfr sbit-CSDN博客)
    1 首先区分bit 和sbit

    bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。
    sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。

    sbit的用法有三种:

      第一种方法:sbit 位变量名=地址值
      第二种方法:sbit 位变量名=SFR名称^变量位地址值
      第三种方法:sbit 位变量名=SFR地址值^变量位地址值

    如定义PSW中的OV可以用以下三种方法:
    sbit OV=0xd2 (1)说明:0xd2是OV的位地址值
    sbit OV=PSW^2 (2)说明:其中PSW必须先用sfr定义好
    sbit OV=0xD0^2 (3)说明:0xD0就是PSW的地址值
      因此这里用sfr P1_0=P1^0;就是定义用符号P1_0来表示P1.0引脚,如果你愿意也可以起P10一类的名字,只要下面程序中也随之更改就行了。
    注意:"^"实质代表的是异或运算,可以算一下,恰好符合。
    2.Sfr用法
    sfr 似乎不是标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新的关键词,其用法是:sfrt 变量名=地址值。

    例:sfr P1 = 0x90;
    这样的一行即定义P1 与地址0x90 对应,P1 口的地址就是0x90.
    读者认为上述使用sfr的本质上与申明变量的性质相同,都是在给一个系统内部的地址命名以方便指挥系统调用(与申明变量相同都是在命名)
    SFR的定义在头文件reg51.h或reg52.h中。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-3-4 10:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    1

    主题

    11

    回帖

    41

    积分

    新手上路

    积分
    41
    发表于 2024-2-25 14:23:32 | 显示全部楼层
    gerry 发表于 2024-2-23 20:11
    王兄,你咋发我这个帖子里啦?单独发个新帖吧

    对不起,没有注意
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-3-4 10:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    1

    主题

    11

    回帖

    41

    积分

    新手上路

    积分
    41
    发表于 2024-2-25 16:57:50 | 显示全部楼层
    gerry 发表于 2024-2-23 20:11
    王兄,你咋发我这个帖子里啦?单独发个新帖吧

    sorry,那个视频打卡的笔记是要自己新建一个楼吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    回帖

    167

    积分

    注册会员

    积分
    167
     楼主| 发表于 2024-2-26 11:16:34 | 显示全部楼层
    wangziyi 发表于 2024-2-25 16:57
    sorry,那个视频打卡的笔记是要自己新建一个楼吗?

    是的
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    回帖

    167

    积分

    注册会员

    积分
    167
     楼主| 发表于 2024-2-26 15:38:38 | 显示全部楼层
    第12集:计数器的使用,通过外部输入来计数,与定时器参数差不多,稍微修改下代码即可,主要是TMOD的值。

    void Timer1_Isr(void) interrupt 3
    {
            P34 = !P34;
    }

    void Timer1_Init(void)                //1毫秒@24.000MHz
    {
            TMOD = 0x40;                        //设置计数器模式
            TL1 = 0xFF;                                //设置计数初始值
            TH1 = 0xFF;                                //设置计数初始值
            TF1 = 0;                                //清除TF0标志
            TR1 = 1;                                //计数器1开始计时
            ET1 = 1;                                //使能计数器1中断
    }

    有个疑问是计数的外部输入只能是P35,P34?不能指定其他引脚吗?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    回帖

    167

    积分

    注册会员

    积分
    167
     楼主| 发表于 2024-2-27 17:35:27 | 显示全部楼层

    实验箱已收到!太给力了,
    IMG_4602.JPG
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    回帖

    167

    积分

    注册会员

    积分
    167
     楼主| 发表于 2024-2-28 18:08:45 | 显示全部楼层
    第13集:简易多任务处理总结,在实际项目中尽量把独立的功能抽出模块文件,由主程序调用对应的方法。这样既流程清晰,也方便查看模块功能。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    5 天前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    1

    主题

    20

    回帖

    167

    积分

    注册会员

    积分
    167
     楼主| 发表于 2024-2-28 20:38:27 | 显示全部楼层
    第14集:矩阵按键总结
    独立按键:一个按键占用一个IO口
    矩阵按键:将按键排列成矩阵形式的按键,占用的IO口数量为行*列
    优点:减少IO口占用
    缺点:程序复杂

    按键识别原理:端口默认为高电平,实时读取到引脚为低电平是表示按下。
    第一步:现将P0.0-P0.3输出低电平,P0.6-P0.7输出高电平,如果有按键按下,按下的那一列的IO就会变成低电平,就可以判断出哪一列按下了。
    第二步:现将P0.0-P0.3输出高电平,P0.6-P0.7输出低电平,如果有按键按下,按下的那一行的IO就会变成低电平,就可以判断出哪一行按下了。
    第三步:行列组合一下就可以判断出是哪个按键按下了。

    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-20 18:48 , Processed in 0.070621 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表