电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • APP

    随时找料

    即刻洽谈

    点击下载PC版
  • 公众号

    电子元器件

    采购信息平台

  • 移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

单片机的内外部结构分析(二)

来源: 作者:华仔 浏览:227

标签:

摘要: http://一、 程序的完善   上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯不断地闪烁,这就有一定的实用价值了,比如可以把它当成汽车上的一个信号灯用了。怎样才能让灯不断地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要p10不断地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行: setb p10 clr p10 ……  这是不行的,有两个问题

http://

一、 程序的完善   上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯不断地闪烁,这就有一定的实用价值了,比如可以把它当成汽车上的一个信号灯用了。怎样才能让灯不断地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要p10不断地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行:
setb p10 clr p10 ……  这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完setb p10后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了clr p10指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完clr p10后,不会再去执行setb p10指令,所以以后再也没有机会让灭了。
  为了解决这两个问题,我们可以做如下设想,第一,在执行完setb p10后,延时一段时间(几秒或零点几秒)再执行第二条指令,就可以分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行第一条指令,不断地在原地兜圈,我们称之为"循环",这样就可以完成任务了。
以下先给出程序(后面括号中的数字是为了便于讲解而写的,实际不用输入): ;主程序:loop: setb p10     ;(1)    lcall delay   ;(2)    clr p10     ;(3)    lcall delay   ;(4)    ajmp loop    ;(5);以下子程序delay: mov r7,#250  ;(6)d1: mov r6,#250    ;(7)d2: djnz r6,d2    ;(8)  djnz r7,d1     ;(9)  ret         ;(10)  end         ;(11)按上面的设想分析一下前面的五条指令。
  第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模一样,也是延时,第五条应当是转去执行第一条指令。第二和第四条实现的原理稍后谈,先看第五条,ljmp是一条指令,意思是转移,往什么地方转移呢?后面跟的是loop,看一下,什么地方还有loop,对了,在第一条指令的前面有一个loop,所以很直观地,我们可以认识到,它要转到第一条指令处。这个第一条指令前面的loop被称之为标号,它的用途就是给这一行起一个名字,便于使用。是否一定要给它起名叫loop呢?当然不是,起什么名字,完全由编程序的人决定,可以称它为a,x等等,当然,这时,第五条指令ljmp后面的名字也得跟着改了。

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67
Baidu
map