m0_56364076 2021-12-07 16:01 采纳率: 85.7%
浏览 34
已结题

怎么用XBYTE[16进制]实现秒表从0000自加1到9999?

问题遇到的现象和发生背景

模拟图

img

img

问题相关代码,请勿粘贴截图

代码有错
#include <stdio.h>
#include <REG52.H>
#include <ABSACC.H>
#define led_low XBYTE[0xf7ff] //led1与led2数码管
#define led_high XBYTE[0xefff] //led3与led4数码管
unsigned long sex=0;
unsigned int cnt = 0;
unsigned char flag=0,i=0,j=0;
unsigned char str1=0x00,str2=0x00;
void main()
{
EA = 1;
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
ET0 = 1;
TR0 = 1;
//显示1234
led_low = str1;
led_high = str2;
while(1)
{
if(flag==1)
{
flag=0;
i = sex/100;
str1 = 0x(i);
j = sex%100;
str2 = 0x(j);
/* sprintf(str1,"0x%2lld",12);
sprintf(str2,"0x%2lld",34);*/
}
}
}
void to_interrupt() interrupt 1
{
TH0 = 0xFC;
TL0 = 0x67;
cnt++;
if(cnt>=1000)
{
cnt = 0;
sex++;
flag=1;
}
led_low = str1;
led_high = str2;
}

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

1条回答 默认 最新

  • qllaoda 2021-12-07 16:27
    关注

    display(int value)
    {
    char digits[4];
    digits[3] = value % 10; //个位
    value = value / 10;
    digits[2] = value % 10; //十位
    value = value / 10;
    digits[1] = value % 10; //百位
    value = value / 10;
    digits[0] = value % 10; //千位

    led_low = digits[1] << 4 | digits[0];
    led_high = digits[3] << 4 | digits[4];

    }
    仅做思路参考,不要当成代码用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助