原创 单片机闪烁灯设计

2009-8-12 16:26 2405 8 8 分类: MCU/ 嵌入式

;*************************************************电子园51单片机学习网,I)u'tZ^3~0d*{!@4q
;* 本程序是一个LED灯的循环闪烁程序,用INT键来切换*
8kX4`*T&WG5bi0;* 闪烁模式 *www.dangdangdz.com
r;b$Y,` L_)Box0;*************************************************
`/l lg4|pe0include 电子园51单片机学习网4GnL R)~q3b
;*----电子园51单片机学习网9H!O~!l ]
MODESEL equ 20h
?)Yg.qL5s-sx0MODESELB equ 21h
e*{)f h%~u0Count equ 22h电子园51单片机学习网(a)P \FN[9?y j}
Count1 equ 23h
Kb9@T`MI0Count2 equ 24h
:\Z+QL5dT0PORTDB equ 25h

(H4dt+Vr~-d0 电子园51单片机学习网1RjE e7g8SQ_3^6v

;*-----

6Y4qlQhTV0

#M0s QmBVC0org 0
i3O WY^2K:@7H0goto start
&r s$X\ R7d t~0org 4电子园51单片机学习网.i| v2j0f
goto ISR

d d0^SK$D;w]C$o0

r j2S B)[0org 10电子园51单片机学习网}(J M NN-YvTa9D
start
.l4mdv{G]O)x0clrf PORTD ;清D口电子园51单片机学习网fjN*Q Q x
movlw 00h电子园51单片机学习网?8nn-N+|/m
movwf MODESEL ;初始化模式选择寄存器
)z!V'r!Py0movwf MODESELB电子园51单片机学习网iH8`!As j#y$Zt/W4A%u
movlw b'10010000'电子园51单片机学习网m1^cQ v S:q!F(y
movwf INTCON ;初始化中断控制
W oT.r&wz0bsf STATUS,RP0
N!z-y Sm zq'`d5`0clrf TRISD ;设D口全为输出
HZF5m+U0movlw b'10111111'
e_5dE(rS0OPTION ;选择INT下降沿有效电子园51单片机学习网,D|8nsFi)P3J1` { G)~

电子园51单片机学习网Sb ~/P8B0n*k2J

bcf STATUS,RP0
d4MmVW;rJ6r0K0call FMsel
F aR ]L*vx)P^8z0movwf PORTDB电子园51单片机学习网 M3K+Cj]D
movwf PORTD电子园51单片机学习网;\J n5j/Ko&QA
main btfsc PORTB,0 ;\电子园51单片机学习网0BcvRd"o1\
goto $+6 ; \
b{]Nv*g#J0call Delay ; 按键去抖动电子园51单片机学习网B']J+mN;v`ex
btfsc PORTB,0电子园51单片机学习网a}WN4S*o9k%@$`
goto $+3 ; /电子园51单片机学习网|(z ] x9}2[.v
call FMsel ;/
CQ6z+IW0movwf PORTDB电子园51单片机学习网7saDzkF.I'x
movf MODESELB,W ;
l0q&_I0TdD,`s0movwf MODESEL ;电子园51单片机学习网^zbY L_1eCy
call LongDelay电子园51单片机学习网9u(V5]m+H$c4v-m~
bcf STATUS,C
ox+@ w%c4GW-S0rlf PORTDB,1
]i Ga ?;| {y Q0btfsc STATUS,C电子园51单片机学习网&QX|w;Ci_
bsf PORTDB,0电子园51单片机学习网*l O }!E(Q] V.U
movf PORTDB,W
"\$R4B;@9H\zL|o0movwf PORTD电子园51单片机学习网B)n0Wj2C%Y-I.v%J
goto main电子园51单片机学习网Q.Q[ zoy1W


*U|3K0U zX)eP5V0;*----------
(j5l x#k7b~ {0Delay ; call指令占用2个指令周期
%a0lt~,z+_t a}0clrf Count ; 清 Count占用1个指令周期电子园51单片机学习网 A6u,OM[;zF p
Dloop
tbFVbrj%sSg,r0decfsz Count,f ; 这两行指令将延时电子园51单片机学习网l6A)k+kM}?
goto Dloop ; (256 * 3) -1 个指令周期电子园51单片机学习网 M)N0Qiy PrF+| o
return ; return占用2个指令周期

"oV2c"oyG?0

}yl0d;H+Vr0;*----------------电子园51单片机学习网i@9gF7U
LongDelay
H+W&}.Vb+D/nzFi0clrf Count
"mt$~ G'Jc0clrf Count1电子园51单片机学习网9Dp#E"?#eSD
movlw 0x01
M%f,|QCH,f'R0movwf Count2
#M'H+a IB*Htj0LDloop电子园51单片机学习网 y jSn$Gc"ot Z
decfsz Count,f电子园51单片机学习网 E9PgK ~#zZ
goto LDloop
/g?;Y*Qk@L0decfsz Count1,f电子园51单片机学习网5CR @ O T/usQf{
goto LDloop
G&h2dFNLb1G0decfsz Count2,f
e^6pVtJ0goto LDloop电子园51单片机学习网B%J+y2cx.{5d
return电子园51单片机学习网K J#UGeB6S


*w3xN2D&p3}$[E)i0;*---------------电子园51单片机学习网:d;on }-WB,krK0b7j
FMsel
-|3K)T.p*c[g^0movf MODESEL,w
LO)}f"B&Jt0movwf MODESELB电子园51单片机学习网.i [ lc.R7[2|u
movf MODESEL,w
&N XD"A\$j@ A,X`+is0addwf PCL
!p*iXa#r*]0retlw b'11111000'电子园51单片机学习网;B2w*Rd5OsN
retlw b'11110000'电子园51单片机学习网)T)nGJ{ D
retlw b'11100000'电子园51单片机学习网R6Kk.}!JZ5O%a
retlw b'11000000'
4q,v#Og0i&x(zu,u0retlw b'10000000'
,L#G1@:d`6z5zT7U*k3a#K0movlw 00h
,^/X,j {VYUe _0movwf MODESELB
E|M lj ^8W.m0bsf INTCON,GIE
4M/cG+\t&z/r0retlw b'11111000'电子园51单片机学习网 rs3\Q:fg$n
return

}4{BP:r {U0

O4Ji fE~0;*-------------电子园51单片机学习网G7v8~m0An
ISR
^*]{,Jx.bmH)i dh!f0btfss INTCON,INTF
`Q.u_-n qu0goto $+3电子园51单片机学习网H0G/}b^
bcf INTCON,INTF
r\vHP0incf MODESEL电子园51单片机学习网Ht%@%_ yw7S
retfie
E9v!U(~ n0end

1Y:M3va tw[2NxV&x0

电子园51单片机学习网:Fh\;\^\ d


单片机控制LED灯闪烁的程序编制方法

|-F\ P&d$uA2b0

9g b1A*?1t\"v4b o/e0

1:程序开始(START)

|O"y#HB.G0

2:A=00000000B

,kN%M` A0

3:PORT 0电子园51单片机学习网2qv5o L3w `"e(T


4:延迟(DELAY)

t4r)Qm_f?7A,be0

5:A=11111111B

N kN;^6rhP0

6:PORT 0电子园51单片机学习网xh/V6K*^s9G


7:延迟(DELAY)

qkE0S4M+a/O0

8:反回开始电子园51单片机学习网r5v.E.kE u


延迟子程序编制方法:

f4A"s[Y&S Swr0

1:R6=0

}%u-XY2O\-`0

2:DEL1

||Z!L8R?#Z0x)e0

3:R7=0电子园51单片机学习网Yq*A1[e~


4:$

8h%bYI4Xn}F!@ _0

5:R7-1电子园51单片机学习网/n`-dZ/ji7WW-`%d


6:R7=0 不等于0,返回2

E9`)i-@/w5`a0

7:R6-1电子园51单片机学习网 [ {#@)Ab2e)a9a


8:R6=0 不等于0,返回4电子园51单片机学习网.vu ^'n-{c;X


回主程序电子园51单片机学习网EQ |WF

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条