急求单片机一个编程题,汇编语言,在线等
点亮led,要求亮十秒,灭十秒,循环亮灭,还要求只要有外部中断,当前工作方式立即翻转,即亮灭翻转...
点亮led,要求亮十秒,灭十秒,循环亮灭,还要求只要有外部中断,当前工作方式立即翻转,即亮灭翻转
展开
4个回答
意法半导体(中国)投资有限公司
2023-06-12
展开全部
展开全部
ORG 0000H
LJMP MAIN;跳转到主函数
LJMP ISREX0;跳转到外中断0
ORG 000BH
LJMP ISRTIMER0;跳转到定时器0
ORG 0030H
MAIN: ;主函数入口
MOV R7,#0A0H;R7作为10S的计时器,定时器中断62.5ms X 160
MOV SP,#60H;设置堆栈
MOV TH0,#0BH;定时器初始化,12MHz@12T下,为62.5ms
MOV TL0,#0DCH
MOV TMOD,#01H;定时器工作于方式1,16位
SETB ET0;允许定时器中断
SETB EX0;允许外中断0开启
SETB IT0;外中断0为下降沿触发
SETB EA ;开总中断
LJMP $;后续事务由两个中断完成
ORG 0050H
ISREX0: ;外中断入口
CPL P0.0 ;马上取反P0.0--P0.0就是LED灯
MOV TH0,#0BH;重置定时器
MOV TL0,#0DCH
RETI ;外中断结束
ISRTIMER0:
MOV TH0,#0BH ;重置定时器
MOV TL0,#0DCH
DJNZ R7,CPLLS ;R7自减1,如果不为是,说明不到10s,中断返回
RETI
CPLLS: ;如果R7为0,说明10s到了
MOV R7,#0A0H ; 把R7重新赋值为160
CPL P0.0 ;取反P0.0
RETI
END
LJMP MAIN;跳转到主函数
LJMP ISREX0;跳转到外中断0
ORG 000BH
LJMP ISRTIMER0;跳转到定时器0
ORG 0030H
MAIN: ;主函数入口
MOV R7,#0A0H;R7作为10S的计时器,定时器中断62.5ms X 160
MOV SP,#60H;设置堆栈
MOV TH0,#0BH;定时器初始化,12MHz@12T下,为62.5ms
MOV TL0,#0DCH
MOV TMOD,#01H;定时器工作于方式1,16位
SETB ET0;允许定时器中断
SETB EX0;允许外中断0开启
SETB IT0;外中断0为下降沿触发
SETB EA ;开总中断
LJMP $;后续事务由两个中断完成
ORG 0050H
ISREX0: ;外中断入口
CPL P0.0 ;马上取反P0.0--P0.0就是LED灯
MOV TH0,#0BH;重置定时器
MOV TL0,#0DCH
RETI ;外中断结束
ISRTIMER0:
MOV TH0,#0BH ;重置定时器
MOV TL0,#0DCH
DJNZ R7,CPLLS ;R7自减1,如果不为是,说明不到10s,中断返回
RETI
CPLLS: ;如果R7为0,说明10s到了
MOV R7,#0A0H ; 把R7重新赋值为160
CPL P0.0 ;取反P0.0
RETI
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机原理由运算器、控制器、存储器、输入输出设备构成,单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程;单片机的应用:节能控制;智能语音设备;报警控制;医疗设备。
单片机原理及应用 本书详细地介绍了MC...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
;下列程序,最简单了:
ORG 0000H
LJMP MAIN
JMP X0_INT
ORG 000BH
JMP T0_INT
MAIN:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H
SETB TR0 ;启动
SETB IT0 ;INT0下降沿触发
MOV IE, #10000011B;允许中断
MOV R2, #200 ;10s
JMP $
;--------------------------------------------
X0_INT: ;外中断
MOV R2, #1
;--------------------------------------------
T0_INT: ;50ms中断一次
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H
DJNZ R2, T0_EXIT ;不到10s转移
MOV R2, #200 ;10s
XRL P1, #255
T0_EXIT:
RETI
;--------------------------------------------
END
ORG 0000H
LJMP MAIN
JMP X0_INT
ORG 000BH
JMP T0_INT
MAIN:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H
SETB TR0 ;启动
SETB IT0 ;INT0下降沿触发
MOV IE, #10000011B;允许中断
MOV R2, #200 ;10s
JMP $
;--------------------------------------------
X0_INT: ;外中断
MOV R2, #1
;--------------------------------------------
T0_INT: ;50ms中断一次
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H
DJNZ R2, T0_EXIT ;不到10s转移
MOV R2, #200 ;10s
XRL P1, #255
T0_EXIT:
RETI
;--------------------------------------------
END
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己动手,工作不愁!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EX0INT
ORG 0013H
LJMP EX1INT
ORG 0030H
MAIN:
MOV SP,#5FH
SETB EA
SETB EX0
SETB EX1
SETB IT0
SETB IT1
MOV A,#00H
LOOP:
CPL A
MOV P0,A
LCALL DELAY10S
SJMP LOOP
DELAY10S:
MOV R2,#200
DELAY1:
MOV R3,#100
DELAY2:
MOV R4,#250
DJNZ R4,$
DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
EX0INT:
CPL A
MOV P0,A
RETI
EX1INT:
CPL A
MOV P0,A
END
LJMP MAIN
ORG 0003H
LJMP EX0INT
ORG 0013H
LJMP EX1INT
ORG 0030H
MAIN:
MOV SP,#5FH
SETB EA
SETB EX0
SETB EX1
SETB IT0
SETB IT1
MOV A,#00H
LOOP:
CPL A
MOV P0,A
LCALL DELAY10S
SJMP LOOP
DELAY10S:
MOV R2,#200
DELAY1:
MOV R3,#100
DELAY2:
MOV R4,#250
DJNZ R4,$
DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
EX0INT:
CPL A
MOV P0,A
RETI
EX1INT:
CPL A
MOV P0,A
END
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询