单片机C 语言:unsigned char code seg[]={0x01,0x12];语法老是报错:

供稿:hz-xin.com     日期:2025-01-13
帮解释一下这个单片机的程序

#include //包含51单片机头文件
//共阳极数码管0-9数组编码
unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//数码管位选数组编码,这里有8位数码管(既8个数码管)
unsigned char code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//下面是变量申明
unsigned char mode=0;
unsigned int temp;
float dianya;
unsigned int dianya1;
//下面是51单片机端口位申明
sbit START=P1^5;
sbit EOC=P1^6;
sbit OE=P1^7;

sbit a=P1^0;
sbit b=P1^1;
sbit c=P1^2;

sbit key=P1^3;
//一个延时函数
void delay(unsigned int z)
{
while(z--);
}
//按键扫描函数
void key_scan()
{
if(key==0) //当key按下时,key既端口P1^3
{
delay(10); //延时
if(key==0) //在检测端口P1^3是否为低
{
/********************************************
到这里你发现你程序有问题
********************************************/
}
}
switch (mode) //这里也有问题,如果mode只为0,变量a b c清0,可以用if语句
{
case 0 : a=0;b=0;c=0;break;

}
}
void main() //主函数
{
unsigned char aa[4],i;
while(1)
{
key_scan();

P2=wei[0]; // 选中第一个数码管
P0=seg[mode]; //第一个数码管显示存在变量mode里的数

/*******************************************
下面部分应该为从AD检测一个电压
*******************************************/
START=1; //P1^5 置1
delay(10); //延时
START=0; //P1^5 置0
while(EOC==0); //如果P1^6为0,一直循环等待
OE=1; //P1^7置1
temp=P3; //把P3端口上8位数赋值给变量temp

dianya=(5.0/255)*temp; //8位AD值转换成电压显示值
dianya1=dianya*10;
aa[2]=dianya1/10; //把转换后的值除10
aa[3]=dianya1%10; //把转换后的值求模

for(i=2;i<4;i++)
{
P2=wei[i]; //数码管2,3分别位选
if(i==2)
P0=seg[aa[i]]&0x7f; //显示转换后的电压值aa[2]并加上点 (除10的值)
else P0=seg[aa[i]]; //显标转换后的电压值aa[3](求模值)
delay(1);
}
}
}

定义一个无符号字符型一维数组,table是数组名table[],中的[],省掉了一个参数,如果有参数,参数就表示些数组包含的个数,{}里的值就是数组包含的值。上面的代码可以写成unsigned char code table[16]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

1、0x12后面那个应该是花括号}不是中括号]
2\code和seg[]之间少一个下划线吧?
是unsigned char code_seg[]={0x01,0x12};吧?
谢谢采纳

封号前面应该是大括号}

unsigned char code seg[]={0x01,0x12};

如果还报错就要在上下文找下了

unsigned char code seg[]={0x01,0x12};

c语言程序 帮我把没一句注释写上,越清楚奖分越多。最好按格式写(第一句...
include<re51.h> \/* 把文件're51.h'的内容包含在程序中*\/ define uchar unsigned char \/*定义数据类型uchar 为无符号的char *\/ define unit unsigned int \/*定义数据类型uint为无符号整形*\/ void delay1ms(uint t) \/*声明并且实现函数,函数命为d elay1ms1ms 参数为 uint ,返回值为void*\/...

C语言中void具体由什么作用
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void真正发挥的作用在于:(1) 对函数返回的限定;(2) 对函数参数的限定。转换运算符把赋值运算符右边的指针类型转换为左边指针的类型。例如:float *p1;int *p2;p1 = p2;其中p1 = p2语句会编译出错,...

跪求16*16点阵C程序,显示“科技改变生活”六字,由于刚刚学习单片机,程序...
0xf5,0xed,0xf5,0xeb,0xf9,0xef,0xff},\/\/片 {0xf8,0x3f,0xe7,0xcf,0xdf,0xf7,0xbf,0xfb,0xb3,0x9b,0x73,0x9d,0x7f,0xfd,0x7f,0xfd,0x6f,0xed,0x67,0xcd,0xb3,0x9b,0xb8,0x3b,0xdf,0xf7,0xe7,0xcf,0xf8,0x3f,0xff,0xff},\/\/笑脸 };register unsigned char i,j,...

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
共阳数码管中断程序:include<reg52.h> define uint unsigned int define uchar unsigned char uchar code table[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uint num,a;uchar bai,shi,ge;void init();void delay(uint);void ...

c语言实验报告心得
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、...试一试将auxr.1清0,然后在c语言中直接声明xdata类型的变量 十三、BUG of Keil C51 程序中用如下语句:const unsigned char strArr[] = {"数学"};结果...

51单片机 c语言看门狗程序怎么写
看门狗在51单片机电路里的作用是防止程序 “跑飞”、“死机”后,系统不动作,而采取复位的办法“唤醒”系统。89S51、89S52系列单片机自带有看门狗功能,片内数据区A6H寄存器具有看门狗功能,使用很简单:include<reg51.h> ...sfr WDTRST = 0xA6;...void main(){ WDTRST=0x1E;;\/\/初始化看门狗 W...

怎样用51单片机做计算器啊?
1、首先第一步就是要进行查找元器件并放入到原理图中,如下图所示。2、接着就是要进行原理图连接根据网络标签的方式即可。3、然后就是要进行编写程序,程序源代码 include <reg51.h>#include <intrins.h> include <ctype.h> include <stdlib.h> define uchar unsigned char define uint unsigned ...

学习单片机之前需要预备哪些知识
unsigned char vextor[10];int wwww;注意:变量名不能用C语言中的关键字表示。(9)包含的头文件(可以在安装目录下INC目录下查看)通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h reg52.h(定义特殊功能寄存器和位寄存器);math.h ...

C 中:是什么意思?
struct switch typedef union unsigned void volatile while _Bool _Complex _Imaginary C语言突出特点 1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显著特点是...

用单片机对步进电机进行控制
片机一切工作停止,直到下一个中断或硬件复位为止。2 步进电机驱动实现2.1简介 步进电机在单单仅给予电压时,电机是不会动作的,必须由脉冲产生器提供位置(脉...51单片机C语言教程. 电子工业出版社 2008附录C代码单片机控制步进电机实现功能: 定时器中断:定时时间设置为30秒,首先给的初值每次中断为5ms,经过20次中断为...