OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6759|回复: 10

用51汇编用定时器中断控制四个小灯闪亮

[复制链接]

3

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-29
在线时间
10 小时
发表于 2018-10-13 00:01:19 | 显示全部楼层 |阅读模式
10金钱
要求P1.0~P1.4控制4个按键,P0.0-P0.4控制四个灯,P3.2口接一个按键用外部中断0控制所有灯灭,定时器中断让四个灯分别延时1s,2s,3s,4s闪亮,单片机晶振12MZH
。要用汇编语言!!
下面是我自己写的程序 最好能在我的基础上改


ORG  0000H     
SJMP  MAIN     
ORG  000BH     
SJMP  CTC0
ORG  0003H
LJMP OUT
ORG  0030H
MAIN:
      MOV SP,#60H
          MOV TMOD,#01H
          MOV TL0,#03CH        ;定时器初值50ms
          MOV TH0,#0B0H
          SETB TR0
          SETB EX0
          SETB ET0
          SETB EA
          ACALL SEND ;寄存器初值
M1:          JNB P1.0,L5
      JNB P1.1,L6
          JNB P1.2,L7
          JNB P1.3,L8
L5:   MOV R0,#00H
      SJMP L1
L6:   MOV R1,#00H
      SJMP L2
L7:   MOV R2,#00H
      SJMP L3
L8:   MOV R3,#00H
      SJMP L4

L1:  MOV R7,#14H   ;定时1s
     DJNZ R7,
L2:  MOV R7,#28H   ;定时2s
     DJNZ R7,
L3:  MOV R7,#3CH  ;定时3s
     DJNZ R7,
L4:  MOV R7,#50H ;定时4s
     DJNZ R7,
SEND:
     MOV P0,#0FFH
         MOV R0,#0FFH
         MOV R1,#0FFH
         MOV R2,#0FFH
         MOV R3,#0FFH
         RET
CTC0:
     MOV TL0,#03CH
         MOV TH0,#0B0H
         CJNE R0,#00H,K1
         CJNE R1,#00H,K2
         CJNE R2,#00H,K3
         CJNE R3,#00H,K4
       
K1:  CPL P0.0
     LJMP M1
K2:  CPL P0.1
     SJMP M1
K3:  CPL P0.3
     LJMP M1
K4:  CPL P0.4
     LJMP M1
         RETI

OUT:
     ACALL SEND
         RETI
         END

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-10-13 02:07:56 | 显示全部楼层
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-29
在线时间
10 小时
 楼主| 发表于 2018-10-13 07:36:11 | 显示全部楼层
回复

使用道具 举报

17

主题

465

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2142
金钱
2142
注册时间
2013-1-11
在线时间
504 小时
发表于 2018-10-13 14:34:23 | 显示全部楼层
你这个现在有什么问题?需要改
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-29
在线时间
10 小时
 楼主| 发表于 2018-10-13 15:07:20 | 显示全部楼层
默默莱 发表于 2018-10-13 14:34
你这个现在有什么问题?需要改

把程序仿真达不到效果 程序是有问题的
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-29
在线时间
10 小时
 楼主| 发表于 2018-10-13 15:08:35 | 显示全部楼层
默默莱 发表于 2018-10-13 14:34
你这个现在有什么问题?需要改

仿真达不到效果 程序达不到效果 不知道怎么让P1.0按下的时候 定时器中断里就让P0.0变成低电平
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2018-10-14 00:14:41 | 显示全部楼层
第一,不要用汇编
第二,外部中断真不是用来处理按键的
第三,在定时器里处理灯,定时器倒计时,0关闭灯,非零闪灯同时减时间,
按键只是赋个时间初值而已,一秒就是1000/50,要关闭,就直接把计时值改为0。
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-29
在线时间
10 小时
 楼主| 发表于 2018-10-14 07:40:09 | 显示全部楼层
zhxzhx 发表于 2018-10-14 00:14
第一,不要用汇编
第二,外部中断真不是用来处理按键的
第三,在定时器里处理灯,定时器倒计时,0关闭灯 ...

要求用汇编的
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2018-10-14 21:11:41 | 显示全部楼层

用C,编译的时候可以得到汇编代码。
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2018-10-14 21:12:43 | 显示全部楼层

用C,编译的时候可以得到汇编代码。
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2018-6-29
在线时间
10 小时
 楼主| 发表于 2018-10-16 10:03:06 | 显示全部楼层
zhxzhx 发表于 2018-10-14 21:12
用C,编译的时候可以得到汇编代码。

我去试试吧~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表