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

来源:互联网 发布:抽奖软件可内定 编辑:程序博客网 时间:2024/06/05 01:02
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中,启动仿真,运行结果如下

 
0 0
原创粉丝点击