标题:
问一下大佬此处为何编译器报错,第一次还能运行
[打印本页]
作者:
QQ_5E9EC8
时间:
2025-2-21 17:19
标题:
问一下大佬此处为何编译器报错,第一次还能运行
#include <REGX52.h>
#include <INTRINS.H>
typedef unsigned char u8;
typedef unsigned char u16;
typedef unsigned long u32;
// 数字0-9的编码
static u8 codes[10] = {
0x3f,
0x06, // 1
0x5B, // 2
0x4F, // 3
0x66, // 4
0x6D, // 5
0x7D, // 6
0x07, // 7
0x7F, // 8
0x6F // 9
}
u8 buffer[8];//这里哪错了?编译器一直提示
void Delay1ms(u16 count) //@11.0592MHz
{
u8 i, j;
while (count > 0) {
count--;
_nop_();
i = 2;
j = 199;
do {
while (--j);
} while (--i);
}
}
/**
* @brief 内部方法,让数码管某一位显示特定数字
*
* @param position 片选, 从左到右[0-7]
* @param num_code 显示想要的数字编码
*/
void DigitalTube_DisplaySingle(u8 position, u8 num_code)
{
P0 = 0x00;
// 位选:P15 P14 P13
position <<= 2;
P2 &= 0xE3;
P2 |= position;
// 段选:P0
P0 = num_code;
}
/**
* @brief 设置显存数组
*
* @param num 待展示数字
*/
void DigitalTube_DisplayNum(u32 num)
{
u8 i;
for (i = 0; i < 8; i++) {
buffer[i] = 0x00;
}
if (num == 0) {
buffer[7] = codes[0];
return;
}
i = 7;
while (num > 0) {
buffer[i] = codes[num % 10];
num /= 10;
i--;
}
}
/**
* @brief 动态扫描
*
*/
void DigitalTube_Refresh()
{
u8 i;
for (i = 0; i < 8; i++) {
DigitalTube_DisplaySingle(i, buffer[i]);
Delay1ms(1);
}
}
void main()
{
DigitalTube_DisplayNum(1234567);
while (1) {
DigitalTube_Refresh();
}
}
作者:
QQ_5E9EC8
时间:
2025-2-21 17:25
没事了,小错误
作者:
黄youhui
时间:
2025-2-21 20:38
buffer[i] = 0x00;谁给你定义的数组buffer
作者:
123156fsadf
时间:
2025-2-22 12:21
QQ_5E9EC8 发表于 2025-2-21 17:25
没事了,小错误
typedef unsigned char u16;
这行应该改成:
typedef unsigned int u16;
作者:
wpppmlah
时间:
2025-2-22 12:35
标点符号引起的小问题
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1