来源 CEPARK网站http://www.cepark.com/Index.html 作者: hnrain
今天忘了把源程序考过来了,明天不上
~g7h|/O KP"k K&V42756 电子园51单片机学习网2h0[ K/Fr([-G
顺便求助一下,如何把protel 中的图纸贴到博客里,不要转成图片,不清楚电子园51单片机学习网$x ]3~Dy7sf Hi
aa5g%fX,]e42756;**************************************************************************电子园51单片机学习网#l;uQi%x
;程序名:散转程序试验
Rjn-F X!bZ*W42756;说明: 开使后led1亮,按下任何按键,寄存器r0从零加起,根据r0内容,程序散转到
1~ J8Z tj)L0D42756;相应处执行,以点亮不同的led
0yA^*]&j;Qn/}-t'G}42756;入口: p3.0--p3.3
+Q+H&P*[7r0m a-W.E42756;出口: P0电子园51单片机学习网vA9`F_b
;练习日期:2007--06--17 好心情电子园51单片机学习网3ke!lu!r
.^D;T$@;m dGu$Y8F42756;修正日期:2007--06--18
#ml%I5GH42756;修正内容:将原来用ljmp的部分换为ajmp,将R0结束值改为08电子园51单片机学习网iMQ"KK-Y:p
;**************************************************************************
G#WC!p |F8G"o42756 org 0000h
(c'JYYCH!KH42756 ljmp main
;wUG6s Em42756 org 0030h
5R,U2b'u7[{42756main: mov p0, #07fh ;初始化p0口,led1点亮
q V'XY ?w$h0y(L42756 mov r0, #00h ;初始化R0,使R0置1
1p"S4l Sc ZQ42756;**********************按键检测********************************************
"P(Q2B5F.P-P42756st: mov P3, #0Fh ;设置P3口,为检测按键做准备,将p3低3位置0电子园51单片机学习网$L,xie7Wt2\m2X
mov a, p3 ;读p3口状态
9g8ylW|E.mm}42756 cjne a, #0fh, F1 ;判断是否有按键按下,若有则跳到F1 处(比较转移,比较a与#0fh的大小
LX1xdR'i2~42756 ;若不相等,责转移,否则顺序往下执行,如果第一个数大于第二个数,则CY
q"_-m/Xw4@42756 ;清零,否则置1,不影响其它操作位,3字节指令
,Q#?!uz!q%QJw42756 acall del 电子园51单片机学习网+_9O|n#}TS/r3Gs
ajmp st电子园51单片机学习网'c8rrV6C:N"v2m
;**********************去抖动***********************************************电子园51单片机学习网C YpY$ppJ
F1: acall del ;延时电子园51单片机学习网H7o.G-BF.G
cjne a, #0fh, f2 ;再次判断按键,若按下,则区按键处理程序,否则为干扰
"TeM;n+pr42756 ajmp st
:xb!` N(I B$c42756;**********************按键处理*********************************************mov电子园51单片机学习网5z-q,aL?
F2: inc r0 ;r0加1
!`J eO\fc_42756 cjne r0, #08h, F3 ;判断R0是否=8,若等于,则顺序执行并将R0,清0,否则跳转到散转程序电子园51单片机学习网t;\)`)ymf
mov r0, #00h ;R0清零电子园51单片机学习网Q|`1]6hu$~Uw
ajmp main
2I1{.m r+@(bp42756;**********************散转处理*********************************************电子园51单片机学习网m*Gc/y2Li
F3: mov DPTR, #TAB ;将数据表地址传送到DPTR电子园51单片机学习网3@@;n R2w3R5f `&?
mov a, R0 ;将偏移量送入a
qC _F ezi42756 clr c ;清零进位位电子园51单片机学习网p z(hj t {!L6r
rlc a ;累加器a内容左移,(相当于*2)
#n&a8w^(Z |Yt/CXe42756 jnc nadd ;若cy为零,则跳转到NADD,否则顺序执行
nK G\+g,H y42756 inc dph ;若cy为1时,DPH+1(因为DPTR为16位地址,a为8位,在此处加一,相当于DPTR低8位
`}f9_1DA(f5b+V(@s6V42756 ;向高8位进位)修正地址
6lbRbP42756NADD: jmp @a+DPTR ;散装指令,将a中的无符号数与数据指针DPTR的16位相加,相加之和做为下一条指令的
7|G"m#?LJ[gyL42756 ;地址送入PC中,不改变a和dptr,也不影响标志位,采用变址方式实现无条件转移
3h*B%j;GpHJ r42756 ;其特点时转移地址可以在程序中加以改变
X9tZG yO:H"o42756;***********************数据表************************************************电子园51单片机学习网RAe%\8l5z
TAB: nop
jX4Ub4lP8@y#rrM42756 nop ;空指令,修正地址电子园51单片机学习网,|OOp9}VnPQ|
ajmp pb1电子园51单片机学习网w S ZC9z"?%P!J
ajmp pb2
1\i @P4QzQ4oy @3T42756 ajmp pb3
z1CJ0A)D_*[x42756 ajmp pb4
/tn!|ZxO7g4q42756 ajmp pb5电子园51单片机学习网"zCU#Uwd2i
ajmp pb6
|/yJp1F_42756 ajmp pb7
Pt'e%RqjIN+Q42756 电子园51单片机学习网QzJ&t? J/o C?
5|)VC7lI9l42756;***********************延时***************************************************电子园51单片机学习网QGv;Ko#t%b
del: mov R1, #014h
+lf lB.|"^}*A G42756d1: mov R2, #0FFH电子园51单片机学习网_"Q#U qw1O
d2: mov r5, #01fh
f9f}4H~,hx F,eU6x42756 djnz R5, $电子园51单片机学习网/h MZEA
djnz R2, d2
I xw;ND M7P(A/g2@42756 djnz R1, d1电子园51单片机学习网 ]|^4A?!M R$yA+X
ret电子园51单片机学习网Kquc4Be
;***********************显示**************************************************电子园51单片机学习网-PGY%k6dM[ D
pb1: mov p0, #03fh电子园51单片机学习网U$D})m'G
acall del电子园51单片机学习网D:|r qC;}:z
ljmp st电子园51单片机学习网_ W&I)Hn9yi\
pb2: mov p0, #01fh
-b8p&g^k ]XC:l42756 acall del
)P[ c un42756 ljmp st电子园51单片机学习网9_1H/r9W GA2e-h2MX
pb3: mov p0, #0fh电子园51单片机学习网QR6s j(LobP4S
acall del电子园51单片机学习网5bU~,z$v!I.b
ajmp st
#t8u ~M3~1h wE$C42756pb4: mov p0, #07h电子园51单片机学习网;x3F(XrZ`.N:`Sf
acall del电子园51单片机学习网q7O3BCxw N
ajmp st电子园51单片机学习网VBT;ln)?k:u*i \
pb5: mov p0, #03h电子园51单片机学习网[no}4r @ BA1@9T
acall del电子园51单片机学习网^@j7OY
ajmp st电子园51单片机学习网(pN.ju7}n u~
pb6: mov p0, #01h
]G3F&H7O e\&p42756 acall del电子园51单片机学习网O6c5rl4YlHQ
ajmp st
7r3R}h,qN'DhFl42756pb7: mov p0, #00h
9`r#B]:M7j2H'v1{ m.^42756 acall del电子园51单片机学习网'mT6?h u{qV3z@
ajmp st
e4`4q9hy0cIE+SXp^42756 end电子园51单片机学习网)|N~)^,d*sh
文章评论(0条评论)
登录后参与讨论