找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3317|回复: 9
打印 上一主题 下一主题
收起左侧

51单片机汇编程序时钟 供电后,程序似乎卡住,求解

[复制链接]
跳转到指定楼层
楼主
P1口段选,P2口位选,P3.0-3.3调秒分时。供电后,程序似乎卡住,求解  
  1. ORG         00H                    JMP MAIN         
  2.                    ORG  0BH
  3.                 JMP TIM0
  4. MAIN:
  5.        MOV IE,#82H                ;使能定时器中断
  6.            MOV TMOD,#01H           ;设置计数初始值,设置为4ms中断一次
  7.            MOV TH0,#0F0H
  8.            MOV TL0,#60H
  9.            MOV R0,#00H                   ;1秒钟计数器,250次后为1s
  10.            MOV 30H,#00H                   ;秒分时初始值00
  11.            MOV 31H,#00H
  12.            MOV 32H,#00H
  13.            MOV R1,#00H                   ;位选累计器
  14.            SETB TR0
  15. LOOP:                                           ;按键设置时分秒,循环扫描按键,否则执行中断程序
  16.            JB P3.0,NOPRESS2         
  17.            CALL FILTER
  18.            MOV A,30H
  19.            ADD A,#01H
  20.            DA A
  21.            MOV 30H,A
  22.            CJNE A,#60H,NOPRESS1;等于60则清零
  23.            MOV 30H,#00H
  24. NOPRESS1:
  25.            JNB P3.0,$
  26.            CALL FILTER
  27. NOPRESS2:
  28.            JB P3.1,NOPRESS4
  29.            CALL FILTER
  30.            MOV A,31H
  31.            ADD A,#01H
  32.            DA A
  33.            MOV 31H,A
  34.            CJNE A,#60H,NOPRESS3;等于60则清零
  35.            MOV 31H,#00H
  36. NOPRESS3:
  37.            JNB P3.1,$
  38.            CALL FILTER
  39. NOPRESS4:
  40.            JB P3.2,LOOP
  41.            CALL        FILTER
  42.            MOV A,32H
  43.            ADD A,#01H
  44.            DA A
  45.            MOV 32H,A
  46.            CJNE A,#24H,NOPRESS5;等于24则清零
  47.            MOV 32H,#00H
  48. NOPRESS5:
  49.            JNB P3.2,$
  50.            CALL FILTER
  51.            JMP LOOP
  52. TIM0:
  53.            PUSH ACC
  54.            CJNE R0,#250,SCAN   ;等于250时说明到1秒,未满则继续扫描显示
  55.            MOV A,#30H
  56.            ADD A,#01H
  57.            DA A
  58.            MOV 30H,A
  59.            CJNE A,#60H,INCSEC ;等于60时说明到一分
  60.            MOV A,31H
  61.            ADD A,#01H
  62.            DA A
  63.            MOV 31H,A
  64.            CJNE A,#60H,INCMIN ;等于60时说明到一小时
  65.            MOV A,32H
  66.            ADD A,#01H
  67.            DA A
  68.            MOV 32H,A
  69.            CJNE A,#24H,INCHR ;等于24说明到一天,清零时分秒寄存器
  70.            MOV 30H,#00H
  71.            MOV 31H,#00H
  72.            MOV 32H,#00H
  73. INCSEC:
  74.            JMP INCTIM
  75. INCMIN:
  76.            MOV 30H,#00H        ;满60秒,清零秒存储器
  77.            JMP INCTIM
  78. INCHR:
  79.            MOV 30H,#00H ;满60分,清零分寄存器,秒存储器
  80.            MOV 31H,#00H         
  81. INCTIM:
  82.            MOV R0,#00H  ;秒存储器清零
  83. SCAN:
  84.            CJNE R1,#6,DISPLAY ;6位数码管扫描值为6,则完成一次扫描
  85.            MOV R1,#00H                  ;清零扫描计数器,继续扫描
  86.            JMP SCAN
  87. DISPLAY:
  88.            CJNE R1,#0,CHK1          ;秒低位显示
  89.            MOV A,30H
  90.            ANL A,#0FH
  91.            MOV P2,#0DFH
  92.            JMP RELOAD
  93. CHK1:
  94.            CJNE R1,#1,CHK2          ;秒高位显示
  95.            MOV A,30H
  96.            SWAP A
  97.            ANL A,#0FH
  98.            MOV P2,#0EFH
  99.            JMP RELOAD
  100. CHK2:
  101.           CJNE R1,#2,CHK3    ;分低位显示
  102.            MOV A,31H
  103.            ANL A,#0FH
  104.            MOV P2,#0F7H
  105.            JMP RELOAD
  106. CHK3:
  107.            CJNE R1,#3,CHK4          ;分高位显示
  108.            MOV A,31H
  109.            SWAP A
  110.            ANL A,#0FH
  111.            MOV P2,#0FBH
  112.            JMP RELOAD
  113. CHK4:
  114.            CJNE R1,#4,CHK5           ;时低位显示
  115.            MOV A,32H
  116.            ANL A,#0FH
  117.            MOV P2,#0FDH
  118.            JMP RELOAD
  119. CHK5:
  120.            CJNE R1,#5,RELOAD ;时高位显示
  121.            MOV A,32H
  122.            SWAP A
  123.            ANL A,#0FH
  124.            MOV P2,#0FEH
  125. RELOAD:
  126.            MOV P1,A                         ;扫描显示
  127.            INC R0
  128.            INC R1
  129.            MOV TH0,#0F0H
  130.            MOV TL0,#60H
  131.            POP ACC
  132.            RETI
  133. FILTER:
  134.        MOV R6,#60H
  135. D1:           MOV R7,#248
  136.            DJNZ R7,$
  137.            DJNZ R6,D1
  138.            RET
  139.            END
复制代码


秒分时。供电后,程序似乎卡住,求解

运行时的图片_1.png (257.95 KB, 下载次数: 67)

运行时的图片_1.png

数字表_1.png (216.26 KB, 下载次数: 55)

数字表_1.png

评分

参与人数 1黑币 +5 收起 理由
BH2RSJ + 5

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2018-1-6 20:42 | 只看该作者
1、R0何时+1?
2、如果T0中断发生在:
NOPRESS4:
           JB P3.2,LOOP
           CALL        FILTER
           MOV A,32H
           ADD A,#01H...........发生在这里

中断返回后:
           DA A
           MOV 32H,A

这时的 DA A之后能保证正确码?

3、当秒会不会=60H、61H、62H呢?
回复

使用道具 举报

板凳
ID:123289 发表于 2018-1-6 20:45 | 只看该作者
写程序,先画个框图,框图走通了再写程序。
这么点逻辑关系都搞不定,复杂一些怎么办?学会画框图很重要!.
回复

使用道具 举报

地板
ID:123289 发表于 2018-1-6 20:46 | 只看该作者
以分为例:
何时清0?何时+1?
回复

使用道具 举报

5#
ID:111634 发表于 2018-1-6 21:18 | 只看该作者
本帖最后由 zl2168 于 2018-1-6 21:28 编辑

实例93  具有校正功能的时钟1302(LED数码管显示)
Proteus仿真一下,确认有效。
实例93 带校正时分秒的时钟1302(6位LED数码管显示).rar (732.75 KB, 下载次数: 5)

以上摘自张志良编著《80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9, 用于学习51单片机原理,程序双解c和汇编语句条条有注解,便于阅读理解,便于自学,可从零基础c语言开始学习
仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

6#
ID:111634 发表于 2018-1-6 21:30 | 只看该作者
本帖最后由 zl2168 于 2018-1-6 21:32 编辑

实例94  模拟电子钟(由80C51定时器产生秒时基)
Proteus仿真一下,确认有效。
实例94 模拟电子钟(由80C51定时器产生秒时基).rar (43.05 KB, 下载次数: 5)

以上摘自张志良编著《80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9, 用于学习51单片机原理,程序双解c和汇编语句条条有注解,便于阅读理解,便于自学,可从零基础c语言开始学习
仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

7#
ID:272432 发表于 2018-1-7 11:54 | 只看该作者
yzwzfyz 发表于 2018-1-6 20:42
1、R0何时+1?
2、如果T0中断发生在:
NOPRESS4:

1,R0是每4毫秒加1,也就是每中断1次就加一,
2,执行中断时,我将累加器的值压入了堆栈,中断结束POP ACC,弹栈
3,秒不会等于大于60H,CJNE A,60H,INC MIN此时MOV 30H,00对秒请0了
回复

使用道具 举报

8#
ID:272432 发表于 2018-1-7 11:56 | 只看该作者
yzwzfyz 发表于 2018-1-6 20:45
写程序,先画个框图,框图走通了再写程序。
这么点逻辑关系都搞不定,复杂一些怎么办?学会画框图很重要!. ...

老师,我是初学,受教了
回复

使用道具 举报

9#
ID:123289 发表于 2018-1-7 12:50 | 只看该作者
看来你还不糊糊。
把你回答的,补写到中断服务程序中去。
另外DA A是依据PSW中的半进和进位标记进行调整的,你没有保护PSW!!!
我回你的三点在中断务程序中没有看到。

这与你是不是初学无关,能理解、逻辑清楚就好。初学不可以作借口,态度要正确。
  
回复

使用道具 举报

10#
ID:272432 发表于 2018-1-7 13:14 | 只看该作者
yzwzfyz 发表于 2018-1-7 12:50
看来你还不糊糊。
把你回答的,补写到中断服务程序中去。
另外DA A是依据PSW中的半进和进位标记进行调整 ...

保护程序标志位?什么意思啊,我回答的都是中断程序中有的啊,搞不清楚了。。。。无知确实不是借口,但我真不清楚
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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