找回密码
 注册
关于网站域名变更的通知
查看: 243|回复: 3
打印 上一主题 下一主题

学51单片机-指令周期与LED闪烁

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-21 10:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
           忽然发现,想系统的写点东西,还真不是那么容易的事,不过已经开始了,我就硬着头皮上了。
      之前讲了如何点亮LED,包括硬件电路和程序,今天说一下如何让LED闪烁。单片机控制LED闪烁有两种方法,一种是软件延时,另一种是定时器中断。因为涉及到单片机指令集的问题,还有一些简单的C语言,今天只讲第一种。
      先说指令集,早期的51单片机都是复杂指令集,因为沿用的习惯现在用的STC89C52单片机也是复杂指令集,和复杂指令集对应的,就是精简指令集,常见的有AVR和430单片机。
      这两种指令集的区别是啥?最明显的就是一条指令执行的时间,举个例子:51单片机和AVR单片机都外接一个12M的晶体,一个时钟周期是1/12M=1/12US,执行一条单周期指令(多周期指令不考虑)需要多少时间?
      51单片机用的时间是 (1/12M)*12=1US.
      AVR单片机用的时间是 1/12M = 1/12US
      同理,如果接8M的晶体,那么时间就是
      51: (1/8M)*12 = 1.5US
      AVR:  1/8M = 0.125US
      由上可见,精简指令集比复杂指令集快了12倍。
      既然外接晶体速度越高,指令周期时间就越短,是不是晶体频率越大越好?当然不是!一个人的心跳速率越快,自然泵血越多,能提供更多的能量,但是如果超出极限,自然就崩溃了。
      51单片机能外接多大的晶体?这个值要看器件手册了,像ATMEL的,最大可以到24M,STC的STC89C52能到35M,如下图:
- n* j9 Y" B1 _
      那么常说的1T,4T,6T,12T是什么意思?因为很多单片机以MCS-51内核为核心,随着工艺的提高,指令周期的速度也会有所提升。12T就是12个时钟周期为一个指令周期,也就是最原始的,维持不变。同理,1T就是一个时钟周期为一个指令周期,4T就是四个时钟周期为一个指令周期。
      好了,说了那么多废话,开始说LED闪烁的事,今天说的是软件延时,软件延时就是单片机在主程序里面计时,当时间到了,打开或者关闭LED,计时的过程中不能做别的事。
      示例程序如下:
      好了,今天就这样,给大家留个思考题,程序中的delay(3000) 延时0.85S是如何算出来的。

6 y2 w# m- t, e. W/ N' A7 a2 q
      程序已经上传到这里:

" R7 X' U2 h8 M% g/ D. N- M
- e: f8 z$ d5 m8 c6 ~. W  g

LED延时闪烁.zip

20.83 KB, 下载次数: 0, 下载积分: 威望 -5

该用户从未签到

2#
发表于 2022-9-21 11:10 | 只看该作者
本帖最后由 big_gun 于 2022-9-23 20:54 编辑 - g& S5 F, Y* K: Y# j: F/ E
% c. l* e- j" L  y3 L7 t/ k4 F
1T,4T,6T,12T指的是机器周期和时钟周期的倍数!!

该用户从未签到

3#
发表于 2022-9-21 14:22 | 只看该作者
本帖最后由 名字好听吗 于 2022-9-23 21:12 编辑 2 r2 z9 E7 S. N' Y5 m) p
" B4 p8 T9 @3 ~2 X+ `$ r0 I- ^" n1 m
用一用AVR单片机,也是很强的。功能都很齐全

该用户从未签到

4#
发表于 2022-9-21 14:44 | 只看该作者
本帖最后由 Dollche 于 2022-9-23 18:34 编辑
# l" @% x* t" B; O/ ?- V2 v. Z' l- q3 e8 S
51单片机都是复杂指令集,现在的新时代单片机,基本都是risc的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-18 19:09 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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