深圳市华胄科技有限公司 >> MCU专题 >> 单片机学习


单片机学习:走进单片机世界(五)



提交者 电子007  在  2007-8-3 15:42:42 

上一篇 下一篇

程序实例
1.单片机控制单个LED闪烁发光
 
这个例子是让LED闪烁,即让LED交替亮与灭。要让接在P1.0引脚上的LED闪烁,实际上就是要LED亮一段时间,再灭一段时间,然后再亮,再灭。。。。换一个说法就是说P1.0周而复始地输出高电平、低电平。
 
单个闪烁程序如下:
 
;主程序
MAIN: SETB P1.0               (1)
      CALL DELAY              (2)
      CLR P1.0                (3)
      CALL DELAY              (4)
      JMP MAIN                (5)
 
延时子程序                
DELAY:MOV R7,#250            (6)
D1:   MOV R6,#250            (7)
D2:   DJNZ R6,D2             (8)
      DJNZ R7,D1             (9)
      RET                    (10)
END                          (11)
 
程序分析:
(1).将P1.0置位为高电平,即让LED熄灭.
(2).调用延时子程序.
(3)将P1.0置位为低电平,即让LED亮
(4).调用延时子程序
(5).跳转到主程序
(6).延时子程序开始,将立即数250传送给寄存器R7.
(7).将立即数250传送给寄存器R6.
(8).将R6中的内容减一后判断,若为0则程序向下执行;若不为0则跳转到D2处(即本行)执行.
(9).将R7中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到D1处执行.
(10).返回调用子程序处.
(11).程序结束.
 
延时程序的分析
1)      MOV
这条指令的意思是传递数据.在指令MOV  R7,#250中,R7是接收者,250是被传递的数.这一条指令的意思是:将数据250送到R7中去.因此,执行完这条指令后,R7单元中的值是250.在250前面有个#号,这条指令称之为立即数传递指令,而#后面的数被称为立即数.
2)      DJNZ
这条指令后面跟着的两个符号,一个是R6,,一个是D2.R6是寄存储器,D2是标号.DJNZ指令的执行过称如下:将后面第一个参数中的值减1,然后看这个值是否等于0.如果等于0,就往下一条知令执行,如果不等于0,则转移到第二个参数所指定的位置去执行,在这里是转移到由D2所标识的那条指令去执行.该条指令最终执行的结果是:指令被执行了250次(因为次前R6中已被送入了一个数:250).
在执行完DJNZ  R6,D2(即R6中的值等于0)之后,转去执行下一条指令,即DJNZ  R7,D1。由于R7中的值不为0,所以减1后转去D1标号处,即执行MOV  R6,#250这条指令。这样,R6中又被送入了250这个数,然后再去执行DJNZ  R6,D2,最终的结果是DJNZ  R6,D2这条指令将被执行了250×250=62500次,从而实现了延时。
 
3)RET
子程序在执行过程中如果遇到这条指令,就会回到主程序,到调用这段程序指令的下一条指令继续执行。
 
 
2.控制8个LED闪烁发光
 
程序如下:
 
MAIN: MOV P1,#0FFH           (1)
      CALL DELAY             (2)
      MOV P1,#00H            (3)
      CALL DELAY             (4)
      JMP MAIN               (5)
DELAY:MOV R7,#250            (6)
D1:   MOV R6,#250            (7)
D2:   DJNZ R6,D2             (8)
      DJNZ R7,D1             (9)
      RET                    (10)
      END                    (11)
程序分析:
(1).将立即数0FFH送到P1口,即让P1口的LED全熄灭.(P1.0~P1.7)
(2).调用延时子程序.
(3)将立即数00H送到P1口,即让P1口的LED全亮(P1.0~P1.7)
(4).调用延时子程序
(5).跳转到主程序
(6).延时子程序开始,将立即数250传送给寄存器R7.
(7).将立即数250传送给寄存器R6.
(8).将R6中的内容减一后判断,若为0则程序向下执行;若不为0则跳转到D2处(即本行)执行.
(9).将R7中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到D1处执行.
(10).返回调用子程序处.
(11).程序结束.
 
程序分析
P1是P1.0~P1.7全体的代表,一个符号P1表示了以P1.开头的8个引脚。MOV指令的用途是数据传递,即把0FFH送到P1端口和把00H送到P1端口,那么0FFH和00H又分别代表什么含义呢?0FFH用二进制表示就是11111111B,而00H用二进制表示就是00000000B。因此,送0FFH就是让所有P1.X引脚输出高电平,即让LED全灭,而送00H就是让LED全亮。
程序中的数字FFH前面有一个0,这是汇编软件所要求的,对于十六进制而言,除了0~9这10个数字外,还用了A~F作为基本数字。如果用来表示数字的第一个字符不是0~9这10个阿拉伯数字中的一个,就要在它前面加一个0,表示这是一个数字,而不是字符。
 
 
3.用单片机实现流水灯。
 
流水灯是一种常见的装饰,常用于舞台,最简单的流水灯就是各个灯依次发光。用单片机实现这一功能很方便。
单片机流水灯程序
ORG 0000H
      JMP SHART
 
SHART:MOV A,#0FEH
LOOP: MOV P1,A
      RL A
      CALL DELAY
      JMP LOOP
 
DELAY:MOV R7,#250
D1:   MOV R6,#250
D2:   DJNZ R6,D2
      DJNZ R7,D1
      RET
END
 
就这么简单的几行程序,就能实现奇妙的流水灯效果,的确不错。
 
程序分析
这段程序中的RL  A是一条左移指令,它的用途是把A累加器中的值循环左移。设A=11111110,则在执行一次RL  A指令后,A中的值变为11111101,执行第二次后,就变为11111011,也就是各位数字不断向左移,而最右一位由最左一位移入。
 
4. 能左右循环的流水灯。
 
ORG 0000H
      JMP AGAIN
AGAIN:MOV SP,#60H
 
LOOP: CLR C
      MOV A,#11111111B
      MOV R4,#8
LOOPL:RLC A
      MOV P1,A
      CALL DELAY
      DJNZ R4,LOOPL
      MOV R4,#8
LOOPR:RRC A
      MOV P1,A
      CALL DELAY
      DJNZ R4,LOOPR
      JMP LOOP
 
DELAY:MOV R5,#50
D1:   MOV R6,#50
D2:   MOV R7,#100
      DJNZ R7,$
      DJNZ R6,D2
      DJNZ R5,D1
      RET
END
 
程序说明
1)  程序由地址0000处开始执行。
2)  跳到AGAIN处
3)  设置堆盏指针至RAM地址60H
4)  进位标志清除
5)  加载初值,使LED全部熄灭
6)  设定左移计数值  移8次
7)  累加器内的值左移一位
8)  累加器的值送到P1口
9)  延时0.5秒  50×50×(100×2)=0.5MS
10)继续左移共8次
11)设定右移计数值  移8次
12)累加器内的值右移一位
13)累加器的值送到P1口
14)延时0.5秒    50×50×(100×2)=0.5MS
15)继续右移共8次
16)再执行循环
17)将立即数50送入寄存器R5
18)将立即数50送入寄存器R6
19)将立即数100送入寄存器R7
20)将R7中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到本行执行.
21)将R6中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到D2处执行.
22)将R5中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到D1处执行.
23)返回调用主程序处
24)程序结束



单片机教程,五系列(55讲)电子书全集下载

论坛精选:
单片机学习,C51单片机入门经典30课 前言
http://bbs.huazhoucn.com/Topic.aspx?id=2694
单片机学习,C51单片机入门经典30课 第一课
http://bbs.huazhoucn.com/Topic.aspx?id=2695
单片机学习,C51单片机入门经典30课 第二课
http://bbs.huazhoucn.com/Topic.aspx?id=2696
单片机学习,C51单片机入门经典30课 第三课
http://bbs.huazhoucn.com/Topic.aspx?id=2697
单片机学习,C51单片机入门经典30课 第四课
http://bbs.huazhoucn.com/Topic.aspx?id=2698
单片机学习,C51单片机入门经典30课 第五课
http://bbs.huazhoucn.com/Topic.aspx?id=2699
单片机学习,C51单片机入门经典30课 第六课
http://bbs.huazhoucn.com/Topic.aspx?id=2700
单片机学习,C51单片机入门经典30课 第七课
http://bbs.huazhoucn.com/Topic.aspx?id=2701
单片机学习,C51单片机入门经典30课 第八课
http://bbs.huazhoucn.com/Topic.aspx?id=2702
单片机学习,C51单片机入门经典30课 第九课
http://bbs.huazhoucn.com/Topic.aspx?id=2703
单片机学习,C51单片机入门经典30课 第十课
http://bbs.huazhoucn.com/Topic.aspx?id=2704
单片机学习,C51单片机入门经典30课 第十一课
http://bbs.huazhoucn.com/Topic.aspx?id=2705
单片机学习,C51单片机入门经典30课 第十二课
http://bbs.huazhoucn.com/Topic.aspx?id=2706
单片机学习,C51单片机入门经典30课 第十三课
http://bbs.huazhoucn.com/Topic.aspx?id=2707
单片机学习,C51单片机入门经典30课 第十四课
http://bbs.huazhoucn.com/Topic.aspx?id=2708
单片机学习,C51单片机入门经典30课 第十五课
http://bbs.huazhoucn.com/Topic.aspx?id=2709
单片机学习,C51单片机入门经典30课 第十六课
http://bbs.huazhoucn.com/Topic.aspx?id=2710
单片机学习,C51单片机入门经典30课 第十七课
http://bbs.huazhoucn.com/Topic.aspx?id=2711
单片机学习,C51单片机入门经典30课 第十八课
http://bbs.huazhoucn.com/Topic.aspx?id=2712
单片机学习,C51单片机入门经典30课 第十九课
http://bbs.huazhoucn.com/Topic.aspx?id=2713
单片机学习,C51单片机入门经典30课 第二十课
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机学习,C51单片机入门经典30课 第二十一课
http://bbs.huazhoucn.com/Topic.aspx?id=2715
单片机学习,C51单片机入门经典30课 第二十二课
http://bbs.huazhoucn.com/Topic.aspx?id=2716
单片机学习,C51单片机入门经典30课 第二十三课
http://bbs.huazhoucn.com/Topic.aspx?id=2717
单片机学习,C51单片机入门经典30课 第二十四课
http://bbs.huazhoucn.com/Topic.aspx?id=2718
单片机学习,C51单片机入门经典30课 第二十五课
http://bbs.huazhoucn.com/Topic.aspx?id=2719
单片机学习,C51单片机入门经典30课 第二十六课
http://bbs.huazhoucn.com/Topic.aspx?id=2720
单片机学习,C51单片机入门经典30课 第二十七课
http://bbs.huazhoucn.com/Topic.aspx?id=2721
单片机学习,C51单片机入门经典30课 第二十八课
http://bbs.huazhoucn.com/Topic.aspx?id=2722
单片机学习,C51单片机入门经典30课 第二十九课
http://bbs.huazhoucn.com/Topic.aspx?id=2723
单片机学习,C51单片机入门经典30课 第三十课
http://bbs.huazhoucn.com/Topic.aspx?id=2724
单片机学习,C51单片机入门经典30课 附录
http://bbs.huazhoucn.com/Topic.aspx?id=2731

2 楼  提交者:Guest 在 2007-8-16 20:53:16
不错哦 易学易懂  不过内容要是再丰富一点我想会更好 
3 楼  提交者:Guest 在 2007-9-29 10:10:19
先学着,我就缺基础了!
4 楼  提交者:limmil 在 2007-10-1 1:48:32
好东西,顶
5 楼  提交者:Guest 在 2007-10-1 9:08:05
好东西
谢谢了哦~~~~~~~~~~~~~~~~
6 楼  提交者:huntervvvv 在 2007-10-1 17:21:55
好东西谢谢了哦
7 楼  提交者:Guest 在 2007-10-2 15:02:00
vrs51l3074
8 楼  提交者:king123as 在 2007-10-3 7:23:10
支持支持!!!
9 楼  提交者:Guest 在 2007-10-3 22:25:51
10 楼  提交者:Guest 在 2007-10-5 14:55:59
11 楼  提交者:黄伟 在 2007-10-6 12:43:47
12 楼  提交者:蔡青青123 在 2007-10-7 11:27:28
GOOD
13 楼  提交者:Guest 在 2007-10-7 12:25:17
14 楼  提交者:夜下月想曲 在 2007-10-8 12:09:35
15 楼  提交者:hsypcb 在 2007-10-8 14:59:45
无内容
16 楼  提交者:Guest 在 2007-10-9 9:47:46
无内容
17 楼  提交者:Guest 在 2007-10-9 11:18:40
18 楼  提交者:单单 在 2007-10-9 13:44:18
19 楼  提交者:homesos 在 2007-10-9 16:30:03
好东西
20 楼  提交者:星子 在 2007-10-10 15:07:40
21 楼  提交者:违章建筑 在 2007-10-10 17:26:35
好啊
22 楼  提交者:Guest 在 2007-10-10 23:44:21
rfaf
23 楼  提交者:freescale 在 2007-10-11 18:49:11
24 楼  提交者:浪子天涯 在 2007-10-12 16:23:08
hao
25 楼  提交者:Guest 在 2007-10-13 11:09:36
回帖是美德,诚信是美德!
26 楼  提交者:jennyxiu8 在 2007-10-13 13:16:06
27 楼  提交者:lngdcctv 在 2007-10-14 8:53:50
28 楼  提交者:icking23 在 2007-10-16 11:55:07
dood
29 楼  提交者:caihong186 在 2007-10-16 18:20:01
k
30 楼  提交者:付伟元 在 2007-10-16 23:53:52
hao
上一篇 下一篇
当前第〖1〗页 共有3页 转到第 1 2 3