请问有大哥会汇编的吗?希望进来帮个忙!~关于脉冲计数的

2019-07-15 20:01发布

本帖最后由 ♫感♬觉♩ 于 2014-4-25 11:56 编辑

QQ图片20140425114252.jpg
用51仿真了一个脉冲计数器(别人的程序),工作挺正常的,但是写进12C5A60S2后,显示变得很暗几乎看不到,话说貌似扫描过快,无奈不知怎么改程序,如果好改,求大神帮忙指点一下,如果改起来挺麻烦,就算了,告知一下便可!!!如果有朋友有相关的程序或方便的话,求不吝赐我一份!谢谢,,,


源程序在此:
NUM_B  EQU  30H        ;计数、显示单元起始地址
NUM_N  EQU  8          ;计数、显示单元的字节数
    ORG  0000H
    JMP  START
    ORG  001BH
    JMP  T1_INT
;------------------------
START:
    MOV  TMOD, #60H    ;T1计数方式2
    MOV  TH1, #255     ;初始值为FF
    MOV  TL1, #255     ;当收到一个输入,立刻引起中断
    SETB TR1           ;启动T1
    MOV  IE, #10001000B;允许中断
    MOV  SP, #40H      ;设置堆栈
;------------------------
M_LOOP:
    CALL DISP
    SJMP M_LOOP
;------------------------
DISP:
    MOV  R0, #NUM_B    ;30H
    MOV  R2, #1        ;先显示最低位
D_LOOP:
    MOV  A,  @R0
    ADD  A,  #(D_TAB - $ - 3)
    MOVC A,  @a + PC
    MOV  P2, #0        ;关闭显示,消隐
    MOV  P0, A         ;输出段码
    MOV  P2, R2        ;输出位码
    CALL DL1MS
    MOV  A,  R2        ;修改位码
    RL   A
    MOV  R2, A
    INC  R0            ;修改显示指针
    CJNE R0, #NUM_B + NUM_N, D_LOOP
    RET
;------------------------
D_TAB:                 ;共阳极段码
    DB  0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H
    DB   80H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH,0FFH;FF是空白的代码
;------------------------
DL1MS:                 ;延时
    MOV  R7, #242
    DJNZ R7, $
    DJNZ R7, $
    RET
;------------------------
T1_INT:                ;T1中断程序
    PUSH PSW           ;保护现场
    SETB RS0           ;换用工作区
    MOV  R0, #NUM_B
T1_LOOP:
    INC  @R0           ;数字加一
    CJNE @R0, #10, T1_END ;不到10就退出
    MOV  @R0, #0       ;到10就清零
    INC  R0            ;转去下一位
    CJNE R0, #NUM_B + NUM_N, T1_LOOP
T1_END:
    POP  PSW           ;恢复现场
    REti
;------------------------
END
;=====================================================
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
z00
1楼-- · 2019-07-15 23:38
DL1MS:                 ;延时
MOV  R7, #242

把延迟时间242增大就可以了
依然落叶飘零
2楼-- · 2019-07-16 03:02
本帖最后由 依然落叶飘零 于 2014-5-1 12:44 编辑

12C5A60S2指令速度比51快10倍左右。单单增加R7的值是延长不了多少时间的。最大值只能增加到255.可以改为双重循环。
  1. DL1MS:                 ;延时
  2.     MOV  R7, #242
  3. L1:MOV  R6, #10
  4.     DJNZ R6, $
  5.     DJNZ R7, L1
  6.     RET
复制代码
具体R7,R6设置什么值还得下载进去试试在确定。
飘逸流云AA
3楼-- · 2019-07-16 04:29
 精彩回答 2  元偷偷看……
913688247
4楼-- · 2019-07-16 05:16
把延迟时间242增大就可以了

一周热门 更多>