单片机C语言编程实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.7 实践2

2.7.1 实践任务

1.学会运行一个C语言程序的方法和步骤。

2.分清C语言的符号、标识符和保留字的区别。

3.掌握C语言的数据类型,会定义整型、实型、字符型变量及对它们的赋值方法。

4.学会使用C的运算符及用这些运算符组成的表达式,特别是自加(++)和自减(--)运算符的使用。

2.7.2 实践设备

装有Keil C51 uvision3集成开发环境的计算机。

2.7.3 实践步骤

1.分析下列C语言程序,说明每一步的作用和执行结果。

      #pragma symbols code                          /* 定义编译环境:产生符号列表、产生汇编程序列表*/
      #include<stdio.h>                          // 包含输入、输出库函数
      #include<reg52.h>                          // 包含硬件定义文件
      sfr P4=0xe8;                                 // 定义特殊功能寄存器P4的地址
      sbit kg=P4^3;                                // 定义开关的位地址
      #define pi 3.1415934                         // 宏定义
      void init_rs232(void)                        // 仿真串口初始化子函数
      { T2CON=0x34;                                // 定时器2作为波特率发生器,自动重装
        SCON=0xda;                                 // 方式3,9位数据,单机通信,允许接收,TB8=1
        RCAP2H=0xff; }
      main()                                       // 主函数
      { const int code kk=1000;                    // 定义各种变量
        unsigned char bdata aa='\\';
        char data bb=-220;
        unsigned int xdata cc=89100;
        int code dd=8910;
        unsigned long idata ee=(kk&200)*1234;
        long pdata ff=1300.234;
        float gg=pi;
        data hh=dd+(aa>bb);
        bit jj=aa;
        init_rs232();                                // 调用仿真串口初始化子函数
        printf("kk=%u\n",kk);                        // 打印各变量的初始值
        printf("aa=%bu\n",aa);
        printf("bb=%bu\n",bb);
        printf("cc=%u\n",cc);
        printf("dd=%u\n",dd);
        printf("ee=%lu\n",ee);
        printf("ff=%lu\n",ff);
        printf("gg=%f\n",gg);
        printf("hh=%u\n",hh);
        printf("1---%d\n", (kk*aa+cc-bb%10)/11 );    // 进行算术运算
        printf("2---%f\n", gg/2+(int)gg/2);
        printf("3---%f\n", gg/aa*bb+(float)ff/6);
        printf("4---%f\t", (float)8/3 );
        printf("5---%f\n", (float)(8/3));
        printf("6---%d\t", aa+(int)gg);
        printf("7---%bu\n", (char)hh );
        printf("%bd\n",++aa+aa+++bb---bb++);          // 进行自加、自减运算
        printf("aa=%bu\n",aa);
        printf("bb=%bu\n",bb);
        printf("*1---%bu\n",~((aa<<4&bb>>3||0x23)^78)); // 进行逻辑运算和关系运算
        printf("*2---%u\n",((kk%4==0)&&(kk%100!=0)||(kk%400==0))+(cc>=aa)+aa);
        printf("*3---%bu\n",aa<bb?3:bb>4?5:6);
        printf("*4---%u\n",(aa-=10,bb+=20+aa,cc=(int)aa+bb));
        printf("*5---%bu\n",sizeof(gg));
        printf("aa=%bu\n",aa);
        printf("bb=%bu\n",bb);
        printf("cc=%u\n",cc);
        for(;;){ }                                   // 无限循环
      }

2.说明变量aa、bb、cc、dd、ee、ff、gg、hh、jj、kk的数据类型、占用字节、存放位置、数值范围。

3.在Keil C51环境下建立上述C语言程序,编译通过后进入调试状态,单步运行,验证你的分析结果。

成绩评定