您的位置:首页 > 编程语言 > C语言/C++

基于proteus的51单片机仿真实例四十六、C语言的枚举类型演示实例

2017-05-07 23:04 519 查看
1、如果一个变量只有几种可能的值,那么可以将该变量定义为枚举类型。所谓“枚举”是将变量的值一一列举出来,变量的取值只限于列出的范围。

枚举定义的语句格式如下:

enum 枚举名{枚举值列表}变量列表;

定义和说明也可以分两句完成:

enum 枚举名{枚举值列表};

enum 枚举名 变量列表;

例如:今天是星期几,结果只能是星期一~星期日这七种。因此可以定义枚举变量:

enum weekday{mon,tue,wed,thu,fri,sat,sun}date1,date2;

或者:

enum weekday{mon,tue,wed,thu,fri,sat,sun};

enum weekday date1,date2;
 
2、枚举类型的说明
1)在C编译器中对枚举元素按常量处理,因此也称为枚举常量(注意:不能对枚举元素进行赋值)。
2)枚举元素作为常量,它是有值的,C语言编译时按定义时的顺序使他们的值为0,1,2,3...,也可以改变枚举元素的值,在定义时直接指定元素的值;
3)枚举值可以用来做比较判断,枚举值的比较规则是按其在定义时的顺序号比较。如果定义时未人为指定,则第一个枚举元素的值默认为0;
4)一个整数不能直接付给一个枚举常量,他们属于不同的类型,应先进行强制类型转换才能赋值
 
3、本例演示枚举类型的定义、枚举变量的定义、枚举元素的引用。

4、在keil c51中新建项目文件ex35,编写如下程序代码,编译并生成ex35.hex文件。
//实例35:枚举类型数据演示实例
#include <reg51.h>    // 包含头文件
void delay(void)     //延时函数

{

  unsigned int i,j;

 for(i = 0;i < 5000;i++)

  for(j = 0;j < 50;j++);

}
void main(void)

{

  enum weekday{mon=2,tue,wed,thu,fri,sat,sun};  //定义枚举数据类型

 enum weekday num1;        //定义枚举变量
 num1 = sat;            //给枚举变量赋值

 P0 = num1;            //送P0口显示

 delay();
 num1 = (enum weekday)3;         //使用强制类型转换,将整型值赋给枚举变量
 if(num1 == thu)        //用枚举值进行判断

 {

   P0 = 0xf0;        //

 }

 else

 {

   P0 = 0x0f;

 }
 while(1)

 {

 }

}
5、在proteus中新建仿真文件ex35.dsn,原理图如下图所示:



6、将ex35.hex文件载入at89c51中,启动仿真,运行结果如下



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐