老大帮帮我啊,我刚开始学,还常常逃课,那位老大舅舅我啊

lucymary1982 2005-11-01 08:23:25
一 接通电源:灯全灭

二 按下k1:

(1) p1口 灯闪,闪2下停止(亮0.4秒,灭0.3秒)。

(2) p2口 灯常亮。

(3) p3口 延长1秒闪2下停止(亮0.5秒,灭0.5秒)。

(4) 在按k1重复。

三 按下k2:

(1) p1口 闪3下停止(亮0.4秒,灭0.3秒)。

(2) p3口 延长1秒闪3下停止(亮0.5秒,灭0.5秒)。

(3) 在按k2重复,其它口不变。

四 按下k3

(1) p2口 如果灯亮,按k3灯灭,如果灯灭,按k3灯亮。

(2) 其它口不变。

五 按下k4 全部复位。

六 按下k5:

(1) p1口 闪20次停止,(亮0.4秒,灭0.3秒)

(2) p3口(亮0.5秒,灭0.5秒)常闪,

(3) 如果常按k5,延长5秒回到p1口 闪20次停止,p3口 常闪。

(4) “注意”不按k1,按k5不起作用,

八 说明

单片机选用经济型的,不怕掉电,最好有记忆的


...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeeAn 2005-11-08
  • 打赏
  • 举报
回复
1:不知(不按k1,k5不起作用)什么意思.就编成了K1,K5必须同时按下。
2:要是用C52会好编点,不过算了,说了用51就用51。
3:如果常按k5 2S,为常按。
4:K4我就没用9脚了。
5:程序不难,但却是很罗嗦,害的我三天没睡午觉,所以:加分
LeeAn 2005-11-08
  • 打赏
  • 举报
回复
听说有人急死了.
嘿嘿,不知自己想好了没有?一个星期了.
我编好了,给你看看吧!!(可能有点小毛病,我没在板子上试过)
;P1口:闪烁次数R1,亮0.4秒R2.灭0.3秒R3
;P3口:延时时间R4---1S,灯亮灭时间R5--0.5S,闪烁次数R6
;R7 按键状态
;R0 判k5常按---2S,5S
;00H---有无延时状态标志,01H---有无闪烁次数限制状态标志
;p3.1---k1,p3.2---k2,p3.3---k3,p3.4---k4,p3.4---k4,p3.5---k5



ORG 0000H
JMP MAIN
ORG 001BH
JMP P3TIME50MS

ORG 030H
MAIN: MOV SP,#40H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV IE,#88H
MOV TMOD,#11H
RETURN: MOV 30H,P3
ACALL TIME50MS
MOV A,P3
CJNE A,30H,RETURN
ORL 30H,#11000001B
MOV R7,30H
CJNE R7,#11111111B,K4
SJMP RETURN
;************************************************************************************


K4: CJNE R7,#11101111B,K1
SJMP MAIN

;************************************************************************************

K1: CJNE R7,#11111101B,K2
K1P2: MOV P2,#00H

K1P3: MOV TL1,#0B0H
MOV TH1,#3CH
SETB 00H
SETB 01H
MOV R4,#14H
MOV R5,#0AH
MOV R6,#04H
SETB TR1

MOV R1,#04H
K1P1: MOV R2,#08H
MOV R3,#06H
K1P1ON: MOV P1,#00H
ACALL TIME50MS
DJNZ R2,K1P1ON
K1P1OFF:MOV P1,#0FFH
ACALL TIME50MS
DJNZ R3,K1P1OFF
DJNZ R1,K1P1

;************************************************************************************

K2: CJNE R7,#11111011B,K3

K2P3: MOV TL1,#0B0H
MOV TH1,#3CH
SETB 00H
SETB 01H
MOV R4,#14H
MOV R5,#0AH
MOV R6,#06H
SETB TR1

MOV R1,#06H
K2P1: MOV R2,#08H
MOV R3,#06H
K2P1ON: MOV P1,#00H
ACALL TIME50MS
DJNZ R2,K2P1ON
K2P1OFF:MOV P1,#0FFH
ACALL TIME50MS
DJNZ R3,K2P1OFF
DJNZ R1,K2P1


;************************************************************************************

K3: CJNE R7,#11110111B,K5
XRL P2,#0FFH

;************************************************************************************

K5: CJNE R7,#11011101B,RETURN
MOV R0,#27H
K5DELAY:ACALL TIME50MS
DJNZ R0,K5DELAY
MOV A,P3
CJNE A,#11011101B,SHORT
MOV R0,#64H
LONG: ACALL TIME50MS
DJNZ R0,LONG
SHORT:
K5P3: MOV TL1,#0B0H
MOV TH1,#3CH
CLR 00H
CLR 01H
MOV R4,#00H
MOV R5,#0AH
MOV R6,#0FFH
SETB TR1

MOV R1,#28H
K5P1: MOV R2,#08H
MOV R3,#06H
K5P1ON: MOV P1,#00H
ACALL TIME50MS
DJNZ R2,K5P1ON
K5P1OFF:MOV P1,#0FFH
ACALL TIME50MS
DJNZ R3,K5P1OFF
DJNZ R1,K5P1

;************************************************************************************

TIME50MS:MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
WAIT: JNB TF0,WAIT
CLR TF0
RET

;************************************************************************************

P3TIME50MS: MOV TL1,#0B0H
MOV TH1,#3CH
JNB 00H,NODELAY
DEC R4
CJNE R4,#00H,INTERRETI
CLR 00H
NODELAY: DJNZ R5,INTERRETI
XRL P3,#0FFH
MOV R5,#0AH
JNB 01H,NOLOOPBOUND
DEC R6
NOLOOPBOUND: CJNE R6,#00H,INTERRETI
CLR TR1
INTERRETI: RETI

END
langzijo 2005-11-03
  • 打赏
  • 举报
回复
奶奶地,看书自己写,用中断调用(外部)
flowercity 2005-11-03
  • 打赏
  • 举报
回复
推荐
《c语言单片机编程》
flowercity 2005-11-03
  • 打赏
  • 举报
回复
不会吧
重复帖子啊
用c51很容易实现的
调用定时中断就可以了
LeeAn 2005-11-03
  • 打赏
  • 举报
回复
5个外部中断?你试试
LeeAn 2005-11-02
  • 打赏
  • 举报
回复
分再加点.80....100
LeeAn 2005-11-02
  • 打赏
  • 举报
回复
c51,汇编 行么?

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧