帮我看一下,这样的程序对吗?

gokiddo 2004-12-09 02:09:45
ORG 0000H
LJMP MAIN ;跳主程序0030H
ORG 000BH
LJMP CTCINT ;跳转至定时器T0的中断服务程序入口

ORG 0030H
MAIN: NOP
NOP
CLR EA
MOV IP,#02H ;T0为最高中断优先级
MOV IE,#82H ;T0开中断
MOV TMOD,#01H ;设置T0工作方式1
MOV TL0,#0B0H ;设置初置100ms
CLR P0.0
CLR P0.1
CLR P0.7
CLR P2.0
CLR P2.1
LCALL DELAY100

MOV R0,#0
MOV A,#0
CLRMEM: MOV @R0,A ;内存清零00H-7F
INC R0
CJNE R0,#80H,CLRMEM
MOV R0,#0
LCALL DELAY1S

START: MOV P0, #00H
JB P0.1,NOT1 ;信号2为高电平转NOT1
JNB P0.0,START ;未加+12v转STAR
SETB P0.7
JNB P0.1,LED1 ;信号2为低电平转LED1

NOT1: SETB TR0 ;启用定时
NOP
LCALL DELAY100
LCALL START


LED1: SETB P2.0 ;LED1 IS bright
LCALL DELAY500
CLR P2.0
SJMP LED1

LED2: SETB P2.1 ;LED2 IS bright
LCALL DELAY500
CLR P2.1
SJMP LED2

CTCINT: NOP ;T0中断服务程序模块
MOV TL0,#0B4H
MOV TH0,#3CH
PUSH ACC
PUSH PSW
NOP
SETB RS0
CLR RS1
START1: LCALL DELAY100
JNB P0.1,RTNH ;NOT HIGH RTNH
IFHIGH: INC 20H
MOV A,20H
CJNE A,#50,START1
CLR P0.7
LCALL LED2
RTNH: NOP ;GO BACK TO MAIN
NOP
POP PSW
POP ACC
RETI


;PTOMO: MOV TMOD,00H
; MOV TH1,63H
; MOV TL1,18H
; SETB EA
; SETB ET0
; SETB TR1
; RET

;PTOMO_5S: PUSH 2
; MOV R4,#100
;DL: LCALL PTOMO_5S
; DJNZ R4,DL
; POP 2
; RET



DELAY100:PUSH 6
PUSH 7
MOV R6,#100 ;DELAY FOR 0.1 S
MOV R7,#248
AG01_1: DJNZ R7,AG01_1
MOV R7,#248
MOV R7,#248
DJNZ R6,AG01_1
POP 7
POP 6
RET

DELAY500: PUSH 5
MOV R4,#5 ;DELAY FOR 0.5 S
DL11: LCALL DELAY100
DJNZ R4,DL11
POP 5
RET

DELAY1S:PUSH 4
MOV R4,#10 ;DELAY FOR 1 S
DL12: LCALL DELAY100
DJNZ R4,DL12
POP 4
RET
END
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FreshBird 2004-12-14
  • 打赏
  • 举报
回复
递归调用LCALL START会不会把堆栈耗尽???
ldqmoon 2004-12-12
  • 打赏
  • 举报
回复
1、堆栈好象没设,不知道有没有关系
2、定时中断中调用延时?
galle 2004-12-09
  • 打赏
  • 举报
回复
START: MOV P0, #00H
JB P0.1,NOT1 ;信号2为高电平转NOT1
JNB P0.0,START ;未加+12v转STAR
SETB P0.7
JNB P0.1,LED1 ;信号2为低电平转LED1

NOT1: SETB TR0 ;启用定时
NOP
LCALL DELAY100
LCALL START《=====自己调用自己???

27,515

社区成员

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

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