找回密码
 立即注册
楼主: gerry

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-04 10:20:28

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引脚
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-01-09 20:59:46

2

主题

22

回帖

275

积分

中级会员

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-04 10:20:28

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中。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-04 10:20:28

1

主题

11

回帖

41

积分

新手上路

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-03-04 10:20:28

1

主题

11

回帖

41

积分

新手上路

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-01-09 20:59:46

2

主题

22

回帖

275

积分

中级会员

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

是的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-01-09 20:59:46

2

主题

22

回帖

275

积分

中级会员

积分
275
发表于 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?不能指定其他引脚吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-01-09 20:59:46

2

主题

22

回帖

275

积分

中级会员

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

实验箱已收到!太给力了,{:5_332:}
IMG_4602.JPG
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-01-09 20:59:46

2

主题

22

回帖

275

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:143
  • 最近打卡:2025-01-09 20:59:46

2

主题

22

回帖

275

积分

中级会员

积分
275
发表于 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, 2025-5-7 03:45 , Processed in 0.139288 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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