首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 常用文档 > 单片机教程4课:第一个单片机小程序

单片机教程4课:第一个单片机小程序

资料介绍
单片机资料

上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯持续地
闪烁,这就有一定的实用价值了,比如能把它当成汽车上的一个信号灯用了。怎样才能
让灯持续地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要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)
按上面的设想分析一下前面的五条指令。
  第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模一样
标签:单片机小程序
单片机教程4课:第一个单片机小程序
本地下载

评论