找回密码
 立即注册
查看: 1379|回复: 8

已送实验箱-何宾老师《STC32位8051单片机原理及应用》感悟&汇编学习

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-3 00:01:43 | 显示全部楼层 |阅读模式
本帖最后由 epc520 于 2023-8-8 17:11 编辑

(一)LED点灯
何宾老师讲的单片机底层的知识很细致,正好趁机学习一下汇编语言,一边学一边实验,挺好。


关于实验箱的建议:现在实验箱电路板中间悬空,靠着4个角的支柱支撑。

我下载程序按住INT0键和ON/OFF键的时候,真怕把板子按成两截,

而且按下键时,板子下凹会不会有些贴片引脚翘起来,造成接触不良,

建议在中心线两端,各加一个支撑。

何宾老师的《STC32位8051单片机原理及应用-STC32G12K128》感悟和汇编学习-1.png
想要P6.0亮,必须要P4.0=0,P6.0=0;
方法有两种,一种直接对8位端口赋值,还有一种对端口的某一位赋值,两种方法任选其一。
如下面代码
何宾老师的《STC32位8051单片机原理及应用-STC32G12K128》感悟和汇编学习-2.png
代码分享,,,上传附件。

STC8H-ASM-LED1.zip (22.56 KB, 下载次数: 51)




挟飞仙以遨游,抱明月而长终!
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-3 12:50:50 | 显示全部楼层
本帖最后由 epc520 于 2023-8-9 22:27 编辑

(二)LED闪烁
实验目的:实现LED以500MS的速率闪烁。

何宾老师直播中,另一个老师认为80c251只有8位数据总线时,认为是8位机,被何老师怼的挺有画面感的哈,理工科直男的乐趣,继续学习汇编延时,使LED闪烁。

如下面代码

捕获.PNG

代码分享,上传附件

STC8H-ASM-LED2.zip (23.43 KB, 下载次数: 49)


挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-3 23:52:59 | 显示全部楼层
本帖最后由 epc520 于 2023-8-9 22:18 编辑

(三)LED流水灯
实验目的:实现LED以100MS的速率从LED0向LED7流动,循环往复

点亮LED小灯,需要打开LED小灯的总开关P4.0,之前的实验都是直接把P4.0~P4.7的8个IO都设置为推挽输出了。
假设电路中P4.1连接的数据输入的芯片,这样粗暴的把P4的8个IO口都设为推挽输出就不对了,只要把P4.0这一个IO口设置成推挽输出即可
可以使用逻辑运算指令


ORL                P4M0,#01H        ;设置P4.0为推挽输出模式
ANL                P4M1,#0FEH


代码截图

1.png

实验效果
mp4无法上传,略
代码分享
STC8H-ASM-LED3.zip (28.36 KB, 下载次数: 51)

====================================================================
====================================================================

2023-08-09:

RL左移指令,能够循环,所以上面的程序还可以化简

1.png

代码分享
STC8H-ASM-LED5.zip (27.2 KB, 下载次数: 48)






挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-4 12:16:19 | 显示全部楼层
本帖最后由 epc520 于 2023-8-4 12:29 编辑

(四)LED流水灯+闪烁

在上一个实验的基础上,增加一个闪烁功能,学习一下新的汇编指令:按位取反CPL。
再吐槽一下stc-isp烧写软件,窗口飘来飘去的,之前直播中也建议优化一下这个烧写软件,
还被一位官方人士怼了,说什么增加这么多功能,做成这样很不容易了,巴拉巴拉的,真的不像技术人员说的话,
技术人员不都是追求完美的嘛!

再次建议:优化一下stc-isp工具

如下面代码实现:LED以100MS的速率从LED0向LED7流动,然后7个灯同时闪烁2次后,再循环往复

1.png

实验效果:
QQ图片20230804120134.gif

最后附上代码:
STC8H-ASM-LED4.zip (28.65 KB, 下载次数: 51)

挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2023-12-18 15:13:58

4

主题

216

回帖

886

积分

高级会员

积分
886
发表于 2023-8-5 10:26:42 | 显示全部楼层
楼主对我们的免费公开课 认可/支持/给力,建议主动联系我们同事
=====提前获得 【免费+包邮送】的 STC32G12K128实验箱 或 STC8H8K64U实验箱
=====现在送的,都可以利用MCU自带的 硬件USB直接仿真,硬件USB直接下载

【免费+包邮】 送/申样/采购 可加 如下 QQ或微信联系
加STC华南区客服刘经理QQ: 3398500488 ;微信:18106296592  要求 【免费+包邮】 送, 还免费教仿真  
加STC华南区客服曹经理QQ:1933892258 ;微信:18106296595 要求 【免费+包邮】 送, 还免费教仿真
加STC华东区客服聂经理QQ:2593903262;微信:18106296598  要求 【免费+包邮】 送, 还免费教仿真
加STC西北区客服孙经理QQ: 1347154513 ;微信:18106296593  要求 【免费+包邮】 送, 还免费教仿真
加STC华北区客服石经理QQ: 1638975601 ;微信:19952583876  要求 【免费+包邮】 送, 还免费教仿真
加STC华中区客服唐经理QQ:2571301708 ;微信:18106296589 要求 【免费+包邮】 送, 还免费教仿真
加STC东北区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
加STC西南区客服张经理QQ:3141888640 ;微信:19952583265   要求 【免费+包邮】 送, 还免费教仿真
工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)

【免费+包邮】 送/申样/采购传统电话热线:0513-55012928、0513-55012929、0513-55012966
工作时间:  8:30-12:00,13:00-17:30(周一 到 周五, 法定节假日除外)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-5 19:28:50 | 显示全部楼层
本帖最后由 epc520 于 2023-8-7 22:13 编辑

(四)数码管显示 (建议:论坛用户可以设置头像,统一头像,区分是谁的回复,都要仔细看用户名,累眼。)


实验目的:2个数码管从0到F以500MS的频率循环显示(1个数码管+8个LED小灯)

今天又补了何老师第8集视频,将keil优化等级,生成的list,map,连接器等知识,感觉收获满满(*^_^*)

接下来学习汇编显示数码管,从原理图上可以看出使用的是共阳数码管,共阳数码管的真值表如下
  1. NUMTAB: DB 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h,88h,83h,0C6h,0A1h,86h,8Eh
复制代码


看电路对发现,LED流水灯也是共阳连接,如果把8个LED摆成8字形,可以看出8个流水灯也相当于一个数码管。

电路设计巧妙的是,8个LED和数码管段选使用同一组IO,即P6.0~P6.7;

然后用 P7.0~P7.7作数码管的位选COM0~COM7


      用 P4.0做8个LED位选,可以看作是COM8.

1.png
2.png

代码实现:

  1. P4 DATA         0C0H
  2. P6 DATA         0E8H
  3. P7 DATA        0F8H
  4. P4M0        DATA    0B4H
  5. P4M1        DATA    0B3H
  6. P6M0        DATA    0CCH
  7. P6M1        DATA    0CBH
  8. ;
  9. P7M1        DATA    0E1H
  10. P7M0        DATA    0E2H
复制代码
这个地址可以在stc参考手册查到
3.png

代码截图:
4.png


实验现象:
QQ图片20230805192821.gif

附上代码:

STC8H-ASM-DigitalTube1.zip (29.75 KB, 下载次数: 52)



挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-7 23:51:45 | 显示全部楼层
本帖最后由 epc520 于 2023-8-8 08:52 编辑

(五)数码管动态扫描
实验目的:数码管1MS动态刷新低4位,显示“4321”



昨天周末又补习了一下,陈桂友教授的视频,里面的第六集正好讲解的是汇编语言,又学到了新姿势。
每集视频最后补充的是STC姚总吗?最后争执头文件包含的问题,我也测试了,发现陈教授讲的没错,
汇编的头文件包含是下面这样的。
  1. $include (STC8H.INC)
复制代码
然后,姚总理解的不对,但是姚总最后给出的截图是对的,只是漏了关键点,重点在01行  $NOMOD51 ,这句是禁用编译器内部预定义的寄存器,使用stc扩展的头文件
哈哈,我最喜欢打脸了,所以都测试了一遍,必须要想下面这样使用
  1. $NOMOD51
  2. $include (STC8H.H)
复制代码


1.png


代码实现:(根据陈教授的汇编框架)
代码部分截图
2.png

实验现象:
1.png
附上代码:

STC8H-ASM-DigitalTube2.zip (48.68 KB, 下载次数: 45)





挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-9 22:26:08 | 显示全部楼层
本帖最后由 epc520 于 2023-8-15 23:59 编辑

(六)数码管动态扫描2
实验目的:数码管1MS动态刷新低4位,显示任意一个立即数,如6295


正在学习BCD码,有点难度,用C语言很好实现任意一个四位数,
  1. void Show_Number(uint16_t dat)
  2. {
  3.         uint8_t dat3,dat2,dat1,dat0;
  4.         
  5.         dat3= dat / 1000 % 10;
  6.         dat2= dat / 100 % 10;
  7.         dat1= dat / 10 % 10;
  8.         dat0= dat / 1 % 10;
  9.         
  10.         //下面依此显示
  11. }
复制代码
汇编语言怎么实现呢,学习中。。。


============================================================
2023-08-15:用汇编实现bcd码,还是蛮有难度的
代码实现:代码里都有注释了,可以一步一步跟着调试走

微信图片_20230815234851.png

笨方法:一步一步在excel里验证

微信图片_20230815234554.png

实验现象:
微信图片_202308  15235052.jpg


附上代码:
STC8H-ASM-DigitalTube3.zip (55.85 KB, 下载次数: 47)

为啥上传失败了


挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:196
  • 最近打卡:2025-04-30 14:16:27

5

主题

24

回帖

415

积分

中级会员

积分
415
发表于 2023-8-16 23:46:24 | 显示全部楼层
(七)数码管动态扫描3
实验目的:数码管1MS动态刷新低2位,以1S的频率来显示0~99


主要学习的新指令有
CJNE
DIV AB  ;A=A/B, B=A%B;
INC

代码实现:
代码部分截图

微信截图_20230816233406.png


实验现象:
QQ图片20230816234452.gif

附上代码:
STC8H-ASM-DigitalTube4.zip (68.01 KB, 下载次数: 42)


挟飞仙以遨游,抱明月而长终!
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 01:04 , Processed in 0.140728 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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