微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问有大哥会汇编的吗?希望进来帮个忙!~关于脉冲计数的

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

时间:10-02 整理:3721RD 点击:



用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
;=====================================================

DL1MS:                 ;延时
MOV  R7, #242
把延迟时间242增大就可以了

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设置什么值还得下载进去试试在确定。

p0口输出电流太小,减小拉电阻试试

把延迟时间242增大就可以了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top