qq_48597100 2022-05-18 12:00 采纳率: 0%
浏览 45

这个汇编程序共阴改成共阳怎么改

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
  LED_0    EQU    30H                ;千分位
    LED_1    EQU    31H                ;百分位
    LED_2    EQU    32H                ;十分位
    LED_3    EQU    33H                ;个位
    ADC        EQU    35H
    CLOCK    BIT    P1.4            ;定义0808时钟位
    ST        BIT    P1.5
    EOC        BIT    P1.6
    OE        BIT    P1.7
    ORG    0000H
    LJMP START
    ORG    000BH
    LJMP INT_T0
    ORG    30H

START: MOV LED_0,#00H
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE ;表格数值赋到DPTR
MOV TMOD,#02H ;定时器选择方式2
MOV TH0,#0F5H ;防止数码管数位闪动,可设定的置为小于等于245的数
MOV TL0,#00H
MOV IE,#82H ;开T0中断
SETB TR0 ;T0开始计数
WAIT: CLR ST
SETB ST ;上升沿清零SAR(SAR用来在A/D转化过程中存放暂态数字量)
CLR ST ;下降沿启动ADC工作
JNB EOC,$ ;等待转换结果
SETB OE ;ADC输出
MOV ADC,P2 ;读取AD转换结果
CLR OE
MOV A,ADC
MOV R7,A ;R7储存AD转换后的结果
MOV LED_3,#00H ;清空个位
MOV LED_2,#00H ;清空十分位
MOV A,#00H
LOOP1: ADD A,#20H ;一位二进制码对应1000mV
DA A ;结果转换成BCD码
JNC LOOP2 ;Cy为0跳转,Cy为1继续执行
MOV R4,A ;R4储存千分分位、百分位
INC LED_2 ;十分位加1
MOV A,LED_2
CJNE A,#0AH,LOOP4 十分位位不为10跳转,为10继续执行
MOV LED_2,#00H ;十分位置0
INC LED_3 ;个位加1
LOOP4: MOV A,R4
LOOP2: DJNZ R7,LOOP1 ;R7减1不为0跳转,为0继续执行
ACALL BTOD1
LCALL DISP ;调用显示子程序
LJMP WAIT
ORG 0200H
BTOD1: MOV R6,A ;R6储存R7为0后的A的值
ANL A,#0F0H ;R6与11110000B后赋给A
MOV R5,#4
LOOP3: RR A
DJNZ R5,LOOP3
MOV LED_1,A ;A右移4次后赋给百分位
MOV A,R6
ANL A,#0FH
MOV LED_0,A ;R6与00001111B后赋给千分位
RET

INT_T0: CPL CLOCK ;提供0808时钟信号
RETI
DISP: ;显示子程序
MOV A,LED_0
MOVC A,@A+DPTR
CLR P1.3 ;千分位显示
MOV P0,A
LCALL DELAY ;数值显示
SETB P1.3

    MOV    A,LED_1
    MOVC A,@A+DPTR
    CLR    P1.2                    ;百分位显示
    MOV    P0,A
    LCALL DELAY                    ;数值显示
    SETB P1.2
    
    MOV    A,LED_2
    MOVC A,@A+DPTR        

    CLR    P1.1                    ;十分位显示
    MOV    P0,A
    LCALL DELAY                    ;数值显示
    SETB P1.1
    
    MOV    A,LED_3
    MOVC A,@A+DPTR
    ADD A,#80H                    ;显示小数点
    CLR    P1.0                    ;个位显示
    MOV    P0,A
    LCALL DELAY                    ;数值显示
    SETB P1.0
    RET

DELAY: MOV R6,#10 ;延时5ms
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H ;共阴数码管7段值
DB 6DH,7DH,07H,7FH,6FH
END

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • qllaoda 2022-05-18 13:52
    关注

    首先, TABLE: DB 3FH,06H,5BH,4FH,66H ;共阴数码管7段值
    DB 6DH,7DH,07H,7FH,6FH
    这个表要改,所有数值全部按位取反。
    然后,每位的显示与消隐控制反过来
    比如 CLR P1.2 ;百分位显示
    MOV P0,A
    LCALL DELAY ;数值显示
    SETB P1.2
    把CLR P1.2和SETB P1.2两句交换位置

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月18日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘