《MCS-51系列单片机原理及接口技术》8 C51语言程序设计.ppt
文本预览下载声明
例8-4:将一个四位压缩BCD码BCD_num拆开成四位BCD码,并存放到FIRST(千位)、SECO(百位)、THIR(十位)、FOUR(个位)这四个字节单元中。这种问题经常在显示时用到。 分析:首先将原数除以1000,得到千位数;再将余数除以100,得到百位数;然后再将余数除以10,得到十位数;最后得到的余数就是个位数。参考程序如下: unsigned int data BCD_num;//双字节BCD码存放单元 unsigned char data FIRST,SECO,THIR,FOUR; void BCD_decompose(void) { unsigned int data temp; FIRST=(unsigned char)(BCD_num/1000); temp=BCD_num%1000;//得到除以1000的余数 SECO=(unsigned char)(temp/100); temp=temp%100;//得到除以100的余数 THIR=(unsigned char)(temp/10); FOUR=temp%10;//得到除以10的余数 } 8.3.2 分支结构程序 分支结构程序就是条件判断分支程序,即根据不同的条件,执行不同的程序段。在C51中,可以采用if-else if嵌套语句,或switch语句。 例8-5:设变量X存放在VAR单元,,函数值将存放在FUNC单元,试按照下式编写程序。 char data VAR; char data FUNC; char fun(char dat) { if(dat0)return(1); else if(dat0)return(-1); else return(0); } //主程序 … FUNC=fun(VAR); … 分析:可以采用if-else if嵌套语句。参考程序如下: * 第八章 C51语言程序设计 8.1 C51语言程序设计 8.2 C51语言语法简介 8.3 基本程序设计 8.4 C51编程举例 8.1 C51语言简介 C51语言的优点: 1)对单片机的指令系统不要求了解,仅要求对单片机的存储器结构有初步了解。 2)寄存器分配、不同寄存器的寻址及数据类型等细节可由编译器管理。 3)程序有规范的结构,可分为不同的函数,可使程序结构化。 4)指定操作的变量选择组合,改善了程序的可读性。 5)关键字及运算函数可用近似人的思维过程方式使用。 6)编程及程序调试时间显著缩短,从而提高效率。 7)提供的库包含许多标准子程序,具有较强的数据处理能力。 8)已编好的程序可容易地植入新程序,具有较强的模块化编程技术。 C51中函数分为两大类,一类是库函数,一类是用户定义函数。库函数是C51在库文件中已经定义的函数,其函数说明在相关的头文件中。这类函数,用户在编程时只要用include预处理指令将头文件包含在用户文件中,直接调用即可。外部函数是用户自己定义、自己调用的一类函数。 C51程序的一般格式如下: 类型 函数名(参数表) 参数说明; { 数据定义部分; 执行语句部分; } 例8-1:用8279芯片实现键盘和显示功能,数据口地址 0xfffe,命令/状态口地址 0xffff 。 #include reg51.h /*库函数 */ #include absacc.h /*库函数*/ #define COM XBYTE[0xffff] /*定义8279的命令地址 */ #define DAT XBYTE[0xfffe] /*定义8279的数据地址 */ … … sbit clr_flag; unsigned char keyin(); /*用户函数名称类型声明*/ void display(unsigned char idata *d) void main(void) /*主函数*/ { … … COM=0xd1; /*对8279总清*/ do{ACC=COM;} while(clr_flag==1); COM=00; /* 8279初始化命令 */ COM=0x2a; … … } void display(unsigned char idata *d) {… …} /*显示函数函数体略 */ … …/* 按键函数略 */ 返回 8.2 C51语言语法简介 8
显示全部