版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C51语言编程技术C51语言基础
单片机应用技术(第2版)项目描述与任务目标项目描述在单片机系统硬件搭建的基础上,软件编程是实现其智能化控制的核心环节。C51语言作为51系列架构单片机的主流开发语言,已成为工业控制、智能设备、物联网终端等领域开发的重要工具。本项目围绕“从硬件到软件、从搭建到编程”的整体思路,以STC89C52单片机为硬件平台,系统介绍C51语言的语法结构、程序框架设计、功能模块编程及调试方法。知识目标理解C51基本语法与程序结构;掌握数据类型、运算符及一维数组的定义与存取机制。能力目标能配置开发环境并编译程序;运用数据类型与运算符完成计算;熟练操作一维数组元素。素养目标养成规范编程习惯与结构化思维;增强国产技术自信;培养系统化工程编程能力。数据类型(二):扩展数据类型除了基本数据类型,C51针对单片机硬件特点提供了扩展数据类型,用于直接操作硬件寄存器和位。sfr(8位特殊功能寄存器)定义8位特殊功能寄存器,用于访问片内RAM的高128字节。例:sfrP1=0X80;sfr16(16位特殊功能寄存器)定义16位特殊功能寄存器,用于操作16位寄存器。例:sfr16T2=0xCC;bit(普通位变量)定义普通的位变量,值只能是0或1,用于逻辑判断。例:bitflag;sbit(可寻址位)定义特殊功能寄存器中的可寻址位,用于单独操作某一位。例:sbitP1_0=P1^0;常量常量是程序运行过程中值不变的量。C51中的常量主要分为以下四种类型:整型常量包括十进制、十六进制(0x开头)、八进制(0开头)。示例:1234,-5678,0x1A,0123浮点型常量由整数部分、小数点和小数部分组成,可用指数形式。示例:0.3141,3.0e-5字符型常量用单引号括起来的单个字符或转义字符。示例:'a','1','#'字符串型常量用双引号括起来的字符序列,系统自动加'\0'结尾。示例:"HelloWorld"变量(一):定义与规则核心定义:变量是程序运行过程中值可以改变的量,使用前必须先定义。定义格式语法结构:类型说明符变量名列表;代码示例:intx,y,z;书写规则同类型变量可用逗号分隔,语句必须以分号结尾类型说明符与变量名之间至少有一个空格变量名必须严格遵守标识符命名规则重要原则先定义后使用,使用前赋初值。这是避免程序运行错误的关键习惯。变量(二):全局变量vs局部变量根据作用域的不同,变量可以分为全局变量和局部变量,以下是它们的核心区别对比:特性局部变量全局变量作用域仅在定义的函数或代码块内有效整个程序文件都有效生命周期函数调用时创建,返回时销毁程序开始运行时创建,结束时销毁存储位置栈(stack)或寄存器静态存储区(RAM固定地址)默认初始值随机值(未初始化时)自动初始化为0(静态存储器特性)访问限制只能在定义的作用域内访问可以在文件的任何地方访问标识符规则标识符是用来标识变量、函数、数组等的名称,必须遵守以下命名规则:规则说明举例组成字符只能由字母、数字和下划线组成tem_1,ADC_value首字符必须为字母(a-z,A-Z)或者下划线(_)_strat,value1大小写敏感C51语言严格区分大小写Counter不等于counter长度限制标准C规定最多31个有效字符motor_rotation_speed_control关键字保留不能使用C语言的关键字作为标识符int,while,bit,sbit命名示例解析正确示例:sum,_led,LED_1,SysTick_Handler错误示例:6sum(数字开头),led&(非法字符),int(关键字)运算符与表达式(一):算术运算符常用算术运算符列表符号说明功能描述+加法运算求两个数的和-减法运算求两个数的差乘法运算求两个数的积/除法运算求两个数的商(整数除法舍去小数)%取余数运算求两个数相除后的余数++自增1变量值自动加1--自减1变量值自动减1代码示例(C语言)intx=5,y=2,z;//定义变量并赋值z=x+y;//z=7z=x-y;//z=3z=x*y;//z=10z=x/y;//z=2(整数除法舍去小数)z=x%y;//z=1(取余数)重点提示:整数除法会直接舍去小数部分;自增(++)和自减(--)运算符常用于循环结构中。运算符与表达式(二):自增自减运算符自增(++)和自减(--)运算符是C语言中特有的操作符,分为前缀和后缀两种形式,执行顺序的不同会导致结果产生显著差异。符号说明功能规则x++先用x的值,再让x加1y=x++;y为4,x为5++x先让x加1,再用x的值y=++x;y为5,x为5x--先用x的值,再让x减1y=x--;y为4,x为3--x先让x减1,再用x的值y=--x;y为3,x为3运算符与表达式(三):关系运算符关系运算符用于比较两个值的大小关系,运算结果为“真”(1)或“假”(0),常用于条件判断。符号说明功能描述>大于左>右,结果为1,否则为0<小于左<右,结果为1,否则为0>=大于或等于左>=右,结果为1,否则为0<=小于或等于左<=右,结果为1,否则为0==等于左==右,结果为1,否则为0!=不等于左!=右,结果为1,否则为0C语言代码示例intx=2,y=3;//定义变量x>y;//0(假,2不大于3)x<y;//1(真,2小于3)x==y;//0(假,2不等于3)x!=y;//1(真,2不等于3)运算符与表达式(四):逻辑运算符逻辑运算符用于连接多个条件,进行逻辑判断,结果为“真”(1)或“假”(0)。符号说明功能规则&&逻辑与(AND)有0为0,全1为1(两边都真才为真)||逻辑或(OR)有1为1,全0为0(一边为真即为真)!逻辑非(NOT)取反,真变假,假变真(一元运算符)代码示例:intx=10,y=20;//定义变量(x>y)&&(x<y);//结果为0(假),因为10>20为假,假&&真=假(x>y)||(x<y);//结果为1(真),因为10<20为真,假||真=真!x;//结果为0(假),因为x=10为非0值,非0取反为0运算符与表达式(五):位运算符位运算符直接对二进制位进行操作,是单片机编程中处理硬件状态、数据加密等场景的重要工具。符号说明功能描述&按位与对应位都为1,结果为1;否则为0|按位或对应位有一个为1,结果为1^按位异或对应位不同,结果为1;相同为0~按位取反所有位取反,0变1,1变0<<按位左移左移n位,相当于乘以2的n次方>>按位右移右移n位,相当于除以2的n次方▍代码示例(C语言)0x23&0x5b=0x03//按位与0x23|0x5b=0x7b//按位或0x23^0x5b=0x78//按位异或~0xc0=0x3f//取反(8位)8<<2=32//左移2位8>>2=2//右移2位应用场景:位运算效率极高,常用于单片机开发中的寄存器操作、状态标志位的检测与设置、以及数据的快速压缩和解压等场景。指针左图形象地展示了指针的概念:内存如同储物柜(地址),数据是柜中物品。指针(蓝色箭头)不直接存储物品,而是存储储物柜的编号(地址),通过它可以找到并操作物品。核心概念:指针是存储内存地址的变量,用于间接访问内存中的数据。定义语法:数据类型*指针变量名;例如:int*p;&取地址符:获取变量的内存地址解引用符:访问指针指向的值代码示例解析:inta=10;//定义变量a,值为10intp;//定义指针变量pp=&a;//p存储了变量a的地址(指针指向a)p=20;//通过指针修改a的值,此时a=20数组(一):一维数组的定义与初始化数组是存储相同类型数据的有序集合,通过数组名和下标访问元素,可视为连续的存储空间。定义格式语法结构:类型说明符数组名[长度];inta[5];//定义一个包含5个int元素的数组初始化分类完全初始化:全部元素赋值,个数与长度一致部分初始化:仅给前N个赋值,未赋值元素默认为0省略长度:由初始化列表中的元素个数决定长度完全初始化unsignedcharnum[5]={1,2,3,4,5};部分初始化unsignedcharnum[5]={1,2};//结果:{1,2,0,0,0}省略长度unsignedcharnum[]={1,2,3};//长度自动为3数组(二):一维数组的应用代码示例:数组求和#include<reg51.h>voidmain(void){unsignedchari,sum=0;unsignedcharnum[5]={1,2,3,4,5};//遍历数组,计算元素总和for(i=0;i<5;i++)sum+=num[i];while(1);}代码逻辑解析变量定义:定义循环变量i和累加变量sum,用于存储计算结果。数组初始化:创建并初始化包含5个元素的数组num,值为{1,2,3,4,5}。遍历与累加:使用for循环遍历数组,通过索引num[i]访问元素并累加到sum。结果输出:循环结束后,sum变量中存储的就是数组所有元素的总和(此处为15)。核心要点:数组遍历是处理批量数据的基础,通过索引(下标)可以高效地访问和操作数组中的每一个元素。模块二:C51语言编程技术任务二:基本语句与程序结构任务目标知识目标理解I/O口控制的基本原理和编程方法掌握单片机三种基本程序结构(顺序、分支、循环)的语法格式掌握if-else、switch、for、while等语句在单片机编程中的实际应用能力目标能够使用赋值语句和I/O控制语句编写简单顺序执行程序能够使用if、if-else、switch语句实现条件分支控制能够使用while、do-while、for语句实现循环控制素养目标培养逻辑严密的编程思路和结构化程序设计能力提升通过编程解决实际硬件控制问题的实践能力培养调试程序和优化代码的良好习惯变量赋值在程序中,变量赋值是最基本的操作,C51语言支持多种类型的变量赋值方式。基本变量赋值直接为不同数据类型的变量赋初值,如整数、浮点数等。inti=4;floata=3.14;sbit型变量赋值用于定义特殊功能寄存器(SFR)中的特定位,地址由用户指定。sbitled=P0^0;bit型变量赋值用于定义普通的位变量,值只能是0或1,地址由编译器分配。bitflag=0;核心区别:bit是普通位变量,其物理地址由编译器自动分配;而sbit是特殊功能寄存器的位定义,其地址由用户根据硬件手册指定(如P0^0)。程序结构概述C51语言的程序结构主要分为三种,它们是构建所有复杂程序的基础。顺序结构程序按语句的书写顺序逐条执行,是最基本的结构,也是其他结构的基础。分支结构根据条件判断结果,选择执行不同的代码块,由if和switch语句实现。循环结构在满足特定条件时,重复执行一段代码,由while、do-while和for语句实现。顺序结构顺序性:程序语句严格按照书写顺序依次执行,逻辑清晰。唯一性:在无跳转的情况下,每条语句仅被执行一次,无重复。连续性:执行完一条语句后,自动流转执行下一条,无间断。不可跳跃性:若无特殊控制语句(如if、goto),程序流程不会发生跳转。main.c#include<reg52.H>sbitLED=P0^0;sbitLED1=P0^1;sbitLED2=P0^2;sbitLED3=P0^3;voidmain(){LED=0;LED1=0;LED2=0;LED3=0;}代码解析:程序依次执行四条赋值语句,将P0口的四个引脚置为低电平,从而依次点亮四个LED灯。分支结构-if语句执行逻辑流程示意语法格式if(表达式){语句;}执行过程如果表达式结果为“真”,则执行花括号内的语句;否则跳过该语句块,继续执行后续代码。代码示例:检测电平点亮LEDif(P1==0x00){//检测P1口是否全为低电平LED=0;//条件为真,点亮LED}分支结构-if-else语句执行逻辑如果表达式结果为“真”(非0),程序执行if分支的语句1;否则(表达式为0),执行else分支的语句2。基本语法if(表达式){语句1;}else{语句2;}实战:按键控制LED亮灭#include<reg52.H>sbitLED=P0^0;sbitKEY=P1^0;voidmain(){while(1){if(KEY==0){LED=0;}//按下点亮else{LED=1;}//松开熄灭}}分支结构-if-else-if语句执行逻辑流程图语法结构if(表达式1){语句1;}elseif(表达式2){语句2;}else{语句n+1;}执行过程程序会依次判断表达式,一旦找到第一个结果为“真”的分支,立即执行其对应的语句并跳出整个结构。示例:温度控制系统if(temp>35){P1=0X03;}//强冷却elseif(temp>30){P1=0x01;}//弱冷却elseif(temp<15){P1=0x04;}//加热else{P1=0x00;}//关闭设备分支结构-switch语句执行逻辑根据表达式的值匹配对应case分支执行,遇到break则退出。switch语句语法格式switch(表达式){case常量:语句;break;...default:语句;}实战:按键控制LED状态切换#include<reg52.h>sbitKEY=P3^2;sbitLED=P1^0;voidmain(){unsignedcharstate=0;LED=1;while(1){if(KEY==0){state=!state;/*消抖与松手略*/}}switch(state){case0:LED=1;break;case1:LED=0;break;}//根据状态点亮或熄灭}循环结构概述核心思想:允许程序重复执行一段代码,直到满足退出条件。编程思路:给定一个循环条件,当条件成立时重复执行循环体,直到条件不成立时终止。C51循环类型分类while循环先判断条件,再执行循环体。如果初始条件不成立,循环体一次都不会执行。do-while循环先执行一次循环体,再判断条件。无论条件是否成立,循环体至少执行一次。for循环将初始化、条件判断和变量更新集中在一处,结构清晰,适用于已知循环次数的场景。选择合适的循环结构可以让代码逻辑更清晰,执行效率更高。循环结构-while语句语法结构(C语言)while(表达式){循环体语句;}执行过程解析1.判断条件:首先计算并判断“表达式”的值是否为真(非0)。2.执行循环:若为真,则执行一次“循环体语句”,然后回到步骤1再次判断。3.退出循环:若为假(0),则跳过循环体,直接执行while语句之后的代码。特点:先判断,后执行。初始条件不满足时,循环体一次都不执行。注意:在循环体内部必须有改变表达式值的语句,否则会造成“死循环”。循环结构-do-while语句do-while执行流程示意图语法结构do{循环体语句;}while(表达式);注意:while后必须有分号;执行过程先执行一次循环体,再判断表达式是否为“真”。若是则继续循环,否则退出。与while语句的核心区别while:先判断,后执行。循环体可能一次都不执行。do-while:先执行,后判断。循环体至少执行一次。总结:do-while适合需要确保循环体至少运行一次的场景。循环结构-for语句for语句执行流程示意图语法结构解析for(表达式1;表达式2;表达式3){循环体语句;}●表达式1:初始化循环变量(仅执行一次)●表达式2:循环条件判断(true则执行,false则退出)●表达式3:更新循环变量(每次循环体执行后)延时应用示例for(i=0;i<3;i++);//简单延时|for(a=0;a<1000;a++)for(b=0;b<115;b++);利用循环执行空语句来消耗CPU时间,实现延时。嵌套循环可显著增加延时长度。综合应用-流水灯LED_Running_Light.c#include<reg52.H>voiddelay(unsignedinti){unsignedintx,y;for(x=0;x<i;x++)for(y=0;y<125;y++);}voidmain(){unsignedinti;while(1){//无限循环for(i=0;i<8;i++){//8个LEDP0=~(0x01<<i);//依次点亮delay(10);//延时}}}延时函数(delay)使用嵌套for循环实现软件延时,控制LED点亮的持续时间。无限循环(while(1))构建主循环体,确保流水灯效果能够持续不断地运行。循环控制(forloop)循环8次,依次对P0口的8个引脚进行位操作控制。位运算操作(P0=~(0x01<<i))通过左移和取反操作,每次仅点亮P0口对应的一个LED灯。💡核心逻辑:利用循环结构遍历端口,配合位运算精准控制硬件引脚电平,实现动态流水效果。模块二:C51语言编程技术任务三:函数构建模块化程序结构·提升代码复用性与可维护性任务目标知识目标掌握函数的定义、声明与调用方法掌握函数的组成结构掌握函数声明与调用的语法规则能力目标根据需求编写自定义函数拆分复杂功能为多个函数实现编写延时、按键扫描、LED控制等函数素养目标养成“分而治之”的模块化编程思路提升解决实际硬件问题的实践与创新能力培养团队沟通与协同解决难题的能力函数概述什么是函数?函数是完成特定功能的代码块,可以被多次调用,使程序更清晰、更模块化。你可以把它想象成一个处理特定任务的“工具”或“功能模块”。函数的四大组成结构返回值类型函数执行完后返回的结果类型,如void,int,char等。函数名函数的名字,用于调用该函数,命名规则同标识符。参数列表函数的输入数据,可以有多个参数,也可以没有参数。函数体函数的具体实现代码,位于大括号{}内部的执行逻辑。函数声明与定义函数声明(Declaration)作用:告诉编译器函数的名称、返回类型和参数列表,确保调用前编译器能进行类型检查。返回类型函数名(参数列表);示例:voiddelay_ms(unsignedintms);函数定义(Definition)作用:函数功能的具体实现,包括函数头和函数体,是程序执行时真正调用的代码块。返回类型函数名(参数列表){函数体;return返回值;}示例:voiddelay_ms(unsignedintms){unsignedinti,j;for(...)...}关键点:声明是“告诉编译器有这个函数”(接口),定义是“告诉编译器这个函数具体怎么做”(实现)。参数传递-形参和实参形参(形式参数)定义:出现在函数定义中,是函数头部括号内声明的变量。特点:函数的局部变量,仅在函数内部有效未初始化,值由实参决定类型有明确约束示例:intadd(inta,intb)中的a和b实参(实际参数)定义:出现在函数调用中,是传递给函数的具体值或表达式。特点:必须是具体的值(常量、变量、表达式等)在调用前必须初始化类型需与形参兼容示例:add(x,y)中的x和y💡核心区别:形参是“定义时的占位符”,实参是“调用时的实际数据”;形参在函数内有效,实参在调用前必须存在。参数传递-值传递值传递数据复制示意图核心概念将实参的值复制一份传递给形参,传递的是数据的副本。函数内部对形参的修改不会影响实参。适用场景基本数据类型(int,char,float等)、小型结构体。代码示例(C语言)voidswap(unsignedchara,unsignedcharb){unsignedchartemp=a;a=b;b=temp;//只交换了副本}voidmain(){unsignedcharx=10,y=20;swap(x,y);//调用后x和y的值不变}参数传递-地址传递地址传递原理示意:直接操作内存核心概念:传递地址,直接操作将实参的内存地址传递给形参,函数内部通过指针操作实参的内存空间,因此可以修改实参的值。典型使用场景处理数组、大型结构体数据,或需要在函数中修改实参的场景。代码示例:数值交换(Swap)voidswap(char*pa,char*pb){chartemp=*pa;*pa=*pb;*pb=temp;}voidmain(){charx=10,y=20;swap(&x,&y);/*x=20,y=10*/}参数传递对比特性值传递(PassbyValue)地址传递(PassbyReference)传递内容传递数据的副本(Copy)传递数据的内存地址(Pointer)操作对象仅操作副本,不影响原数据直接操作原始数据本身原始数据影响无任何影响(隔离性好)会改变原始数据内存开销较大(需复制整个数据块)极小(仅复制一个地址指针)执行效率较低(复制耗时)高(直接访问内存)安全性高(数据隔离,避免误改)较低(需注意副作用)应用场景建议:简单数据类型(如int、float)推荐使用值传递以保证安全;复杂数据类型(如大对象、数组)推荐使用地址传递以提升效率。自定义函数无参函数调用时无需传入参数,也不返回结果。返回类型函数名(){
函数体;
}voidhello(){
printf("Hello!");
}有参函数调用时必须传入实际参数,实现数据交互。返回类型函数名(形参){
函数体;
}intmax(inta,intb){
returna>b?a:b;
}空函数函数体为空,不执行操作,用于预留接口。返回类型函数名(){
//待实现
}voidfunc(){
//未来功能扩充
}核心作用:代码复用、逻辑封装、降低程序复杂度,提升开发效率。标准库函数标准库函数是由C51编译器提供的,我们可以直接调用而无需自己实现。使用时只需包含对应的头文件,即可快速实现复杂功能。常用头文件主要功能说明reg51.h定义51单片机特殊功能寄存器(SFR)和位寄存器reg52.h定义52单片机特殊功能寄存器(SFR)和位寄存器(兼容51)math.h定义常用数学运算函数(如绝对值、三角函数、指数对数等)ctype.h定义字符转换(大小写)和分类(数字/字母)相关的函数stdio.h定义标准输入输出函数(如printf,scanf等)stdlib.h定义存储器分配与转换等通用实用函数absacc.h提供允许直接访问单片机不同存储区的宏定义intrins.h定义逻辑左移、右移、空操作等内部常用函数内部函数内部函数是编译器内置的特殊函数,通常直接映射到单片机的汇编指令,执行效率极高。它们主要在intrins.h头文件中声明。常用内部函数功能描述_crol_将字符型(char)数据按二进制循环左移n位_irol_将整型(int)数据按二进制循环左移n位_lrol_将长整型(long)数据按二进制循环左移n位_cror_将字符型(char)数据按二进制循环右移n位_iror_将整型(int)数据按二进制循环右移n位_lror_将长整型(long)数据按二进制循环右移n位_nop_产生一个空操作(NOP),用于实现极短时间的延时综合应用-库函数控制流水灯main.c-KeiluVision5#include<reg52.h>#include<intrins.h>//包含内部函数头文件voiddelay(unsignedinti){unsignedx,y;for(x=0;x<i;x++)for(y=0;y<125;y++);}voidmain(){P0=0xfe;//初始状态,第一个LED亮while(1){P0=_crol_(P0,2);//循环左移2位delay(20);//延时}}头文件引入包含<intrins.h>以使用C51编译器提供的内部函数(如循环移位函数)。核心:_crol_函数调用_crol_(P0,2)将P0口数据循环左移2位,直接控制LED硬件引脚状态。无限循环机制while(1)确保程序进入死循环,配合延时函数delay(),实现稳定的流水灯效果。💡核心价值:利用标准库函数替代位运算操作,代码更简洁、可读性更强、维护成本更低。模块二:C51语言编程技术任务四:综合应用编程程序实践综合运用顺序、分支、循环结构·提升实际编程能力任务目标知识目标掌握顺序、分支、循环三种基本结构的语法与执行逻辑熟悉多条件判断实现LED模式切换的逻辑设计掌握利用自定义函数与库函数联合构建模块化代码能力目标独立编写并调试顺序程序,实现LED固定亮灭控制通过外部条件设计分支程序,实现LED模式切换运用循环及函数调用,设计并实现流水灯等动态效果素养目标培养结构化、模块化编程思维,提升代码规范性与可读性增强团队协作意识,在项目实践中分工合作完成任务树立严谨、细致、创新的“工匠精神”,追求程序优化顺序程序:两个LED依次固定亮灭设计思路与视觉效果依次点亮相邻的两个LED,并逐步向右移动,最后全部点亮。LED编号:12345678初始:[●●□□□□□□]第二步:[□●●□□□□□]第三步:[□□●●□□□□]......第七步:[□□□□□□●●]第八步:[●●●●●●●●]LED控制逻辑表步骤P0值(HEX)点亮LED10xFCLED1,LED220xF9LED2,LED330xF3LED3,LED440xE7LED4,LED550xCFLED5,LED660x9FLED6,LED770x3FLED7,LED880x00所有LED核心逻辑:通过改变P0口的输出值(十六进制)来控制不同LED点亮,程序按顺序执行,无分支循环。顺序程序:流程图与代码实现▍执行流程逻辑流程清晰展示了从点亮部分LED到全亮的递进过程,每一步均包含状态设置与延时等待。▍C语言代码实现#include<reg52.H>voiddelay(unsignedinti){unsignedcharx,y;for(x=0;x<i;x++)for(y=0;y<125;y++);}voidmain(){P0=0XFC;delay(1000);//点亮LED1和LED2P0=0XF9;delay(1000);//点亮LED2和LED3...//中间步骤省略P0=0X3F;delay(1000);//点亮LED7和LED8P0=0x00;delay(1000);//LED全部亮}代码解析:严格遵循顺序结构,通过赋值P0口控制LED状态,配合delay()函数实现视觉暂留效果。分支程序:多条件下LED模式切换硬件I/O口配置P0口:数码管段选信号输出P1口:P1.0控制LED(低电平驱动)P3口:P3.2连接按键(低电平触发)数码管驱动原理通过P0口输出对应段码控制数码管显示数字:•输出0xC0→显示数字“0”•输出0xF9→显示数字“1”•以此类推,映射0-9数字核心设计思路通过按键次数切换LED模式,并在数码管显示模式号:0.熄灭|1.常亮|2.翻转3.慢闪|4.更慢闪烁利用分支语句(switch/case)实现状态机跳转。关键点总结:该程序综合了按键消抖检测、数码管静态显示以及多分支控制逻辑。重点在于理解如何通过全局变量记录按键次数(状态),并利用分支结构将状态映射为具体的硬件动作。分支程序:代码实现#include<reg52.h>sbitKEY=P3^2;sbitLED=P1^0;unsignedcharcodeseg_table[]={0xC0,0xF9,0xA4,0xB0,0x99};voiddelay(unsignedinti){while(i--);}voidmain(){unsignedcharmode=0;while(1){
if(KEY==0){delay(1000);if(KEY==0){mode++;if(mode>4)mode=0;P0=seg_table[mode];
switch(mode){case0:LED=1;break;
case1:LED=0;bre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 过程控制系统点检员岗前实操知识能力考核试卷含答案
- 肥皂制造工安全知识竞赛模拟考核试卷含答案
- 拖拉机整机装试工岗前理论技能考核试卷含答案
- 工业车辆装配调试工安全生产意识评优考核试卷含答案
- 地毯纱架工安全知识宣贯能力考核试卷含答案
- 灌区管理工岗中测试考核试卷含答案
- 野生植物培植工岗前协调考核试卷含答案
- 乳品发酵工岗前创新思维考核试卷含答案
- 停车管理员核心管理知识考核试卷含答案
- 智能交通设施维护管理项目分析方案
- 2026年秋人教版一年级数学上册第一单元测试卷可打印
- 2026年全国法律硕士(法学)联考真题及答案
- 招聘84人!2026年青海省检察机关面向社会公开招聘聘用制书记员考试备考试题及答案解析
- 2026慢性病患者老人秋冬防病保健专题培训课件
- 北京市城市协管员笔试题库及答案详解
- 2026年湖南水利水电职业技术学院单招职业技能考试题库附答案
- SEMI F63-24 中文版 半导体工艺用超纯水标准指南(2024版)
- 2026-2027学年浙教版数学九上 第3章 圆的基本性质 单元综合知识梳理卷
- 新教科版三上科学学科教学计划-2026秋
- 重症营养支持中国指南(2026版)
- 《朝花夕拾》名著导读
评论
0/150
提交评论