C51语言的编译器中包含有丰富的库函数,使用库函数可以大大简化用户程序设计的工作量,提高编程效率。每个库函数都在相应的头文件中给出了函数原型声明,在使用时,必须在源程序的开始处使用预处理命令#include将有关的头文件包含进来。
C51库函数中类型的选择考虑到了8051单片机的结构特性,用户在自己的应用程序中应尽可能地使用最小的数据类型,以最大限度地发挥8051单片机的性能,同时可减少应用程序的代码长度。
单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是使用较广的单片机编程语言。
问题在变量申明,修改为:
#include "reg52.h"typedef unsigned char u8
typedef unsigned int u16
sbit LSA=P2^2
sbit LSB=P2^3
sbit LSC=P2^4
sfr GPIO_KEY=0x90
sfr GPIO_DIG=0x80
u16 KeyValue
u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}
void delay(u16 i)
{
while(i--)
}
void KeyDown()
{
u8 a=0
GPIO_KEY=0x0f
if(GPIO_KEY!=0x0f)
{
delay(1000)
if(GPIO_KEY!=0x0f)
{
GPIO_KEY=0x0f
switch(GPIO_KEY)
{
case(0x07):KeyValue=0break
case(0x0b):KeyValue=1break
case(0x0d):KeyValue=2break
case(0x0e):KeyValue=3break
}
GPIO_KEY=0xf0
switch(GPIO_KEY)
{
case(0x70):KeyValue=KeyValuebreak
case(0xb0):KeyValue=KeyValue+4break
case(0xd0):KeyValue=KeyValue+8break
case(0xe0):KeyValue=KeyValue+12break
}
while((a<50)&&(GPIO_KEY!=0xf0))
{
delay(1000)
a++
}
}
}
}
void main()
{
LSA=0
LSB=0
LSC=0
while(1)
{
KeyDown()
GPIO_DIG=smgduan[KeyValue]
}
}