您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > AVR培训(四-MicrosoftPowerPoint
•1E&CCollegeAVRTraining2005Slide1AVR单片机技术(四)AVRMicrocontroller主讲李正中E&CCollegeAVRTraining2005Slide2AVR单片机嵌入式C编程EmbeddedCProgramming1.嵌入式C语言体系结构2.变量和常量3.AVR单片机IO端口特性E&CCollegeAVRTraining2005Slide3液晶显示程序的设计LCDProgamming编写一个程序在0802字符液晶上显示“Hi,AVR”。1.液晶接在MEGA16单片机的PORTB口,采用4位接口模式2.通过应用程序生成初始化程序E&CCollegeAVRTraining2005Slide4上机练习Practice利用CodeWizardAVR生成液晶初始化程序显示程序:lcd_gotoxy(0,0);lcd_putsf(“Hi,AVR”);E&CCollegeAVRTraining2005Slide5嵌入式C语言体系结构EmbeddedCStructure/*****************************************************ThisprogramwasproducedbytheCodeWizardAVRV1.24.7eStandardChiptype:ATmega16Programtype:ApplicationClockfrequency:1.000000MHzMemorymodel:SmallExternalSRAMsize:0DataStacksize:256*****************************************************///AlphanumericLCDModulefunctions注释E&CCollegeAVRTraining2005Slide6嵌入式C语言体系结构EmbeddedCStructure头文件声明#includemega16.h//AlphanumericLCDModulefunctions#asm.equ__lcd_port=0x18;PORTB#endasm#includelcd.h预编译•2E&CCollegeAVRTraining2005Slide7嵌入式C语言体系结构EmbeddedCStructure主函数voidmain(void){PORTA=0x00;DDRA=0x00;…….lcd_init(8);while(1){…….};}语句函数函数名返回类型参数类型E&CCollegeAVRTraining2005Slide8嵌入式C语言结构风格特点EmbeddedCStructureCharacter1.习惯用小写字母,大小写敏感2.不使用行号,无程序行概念3.一行上可以写几条语句,一条语句也可以写在几行上。可使用空行和空格4.C程序由语句组成,用“;”作为语句终止符5.常用锯齿形书写格式6.程序由一个或多个函数组成,必须有且只能有一个主函数main()7.程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。7.main(){inti,j,sum;sum=0;for(i=1;i10;i++){for(j=1;j10;j++){sum+=i*j;}}printf(“%d\n”,sum);}E&CCollegeAVRTraining2005Slide9常量Constant常量:1.整型常量2.实型常量3.字符型常量4.字符串常量5.符号常量6.flash常量整型常量三种形式表示:十进制:如123600八进制:以0开始,如0123十六进制:以0x开始,如0x123实型常量小数形式:如123.0.1230.012.5指数形式:如123e2123E2字符常量:单引号括起来的一个字符。如:'a'字符常量的值是一个数字值。如字符常量'0',其ASCII为48,所以存储的实际值为48。字符常量可以象整数一样参与运算。字符串常量:双引号括起来的字符序列。如“Hi,AVR,0等字符串在存储时末尾被自动加上字符'\0'字符常量与只包含一个字符的字符串常量的区别符号常量:用一个标识符代表一个常量#definePI3.14159符号常量符号常量转义字符:转义字符功能ASCII记号转义字符功能ASCII记号\a响铃BEL\\反斜杠字?\\b退格BS\‘单引号字符’\f走纸换页FF\“双引号字符\n换行NL\?问号?\r回车CR\ooo1~3位8进制数ooo\t横向跳格HT\xhh1~2位16进制数hh\v纵向跳格VTFLASH常量:存储在程序存储区的常量Flashchar[]=”hi,avr”;E&CCollegeAVRTraining2005Slide10变量的概念VariableConcept程序运行过程中其值可以改变的量,系统为程序中的每一个变量开辟一个存储单元,如:main(){inta;a=2;printf(a=%d\n,a);a=4;printf(a=%d\n,a);}E&CCollegeAVRTraining2005Slide11变量名VariableIdentifier•标识符:用来标识变量名、符号常量名、数组名、函数名、文件名的有效字符序列。•字母(或下划线)开头,后跟字母、数字和下划线组成。•不能和系统使用的名字(关键字)冲突。•长度无统一规定,许多系统取8个字符。但目前并不如此。•使用有一定的意义的字符串命名变量。同时要遵守一定的规则。E&CCollegeAVRTraining2005Slide12变量的定义VariableDefine所有的变量需先定义类型inta,b,c;/*指定a,b,c为整型变量*/unsignedintlower/*指定lower为无符号整型变量*/floatx,y;/*指定x,y为单精度实型变量*/doublez;/*指定z为双精度实型变量*/charc1,c2;/*指定c1,c2为字符型变量*/•3E&CCollegeAVRTraining2005Slide13变量的大小VariableRangeE&CCollegeAVRTraining2005Slide14变量的存储类别VariableStorageType变量的存储器类别寄存器(没有初始化)静态存储区(上电初始化为0)动态存储区(没有初始化)寄存器变量register自动变量auto静态变量staticEEPROM存储区(掉电保护)EEPROM变量eepromE&CCollegeAVRTraining2005Slide15变量的作用域Local&Global局部变量定义:定义在函数内(在{}内)的变量。局部变量又称之为内部变量有效范围:在所定义的函数、复合语句中。函数的形式参数为局部变量。全局变量定义:在函数之外定义的变量。全局变量又称为外部变量。全局变量从变量定义处开始到该源文件结束处。E&CCollegeAVRTraining2005Slide16变量类型转换TypeConvert临时强制变量的类型和大小,允许操作执行期间覆盖以前声明的类型格式:在表达式前加上括号和所需类型例子:intx=12;chary;y=(char)x+3;x=(int)y;上机练习:intz;intx=150;chary=63;z=(y*10)+x;E&CCollegeAVRTraining2005Slide17上机练习PracticeE&CCollegeAVRTraining2005Slide18AVR的IO端口特性Input&OutputPort•4E&CCollegeAVRTraining2005Slide19AVR的IO端口特性Input&OutputPort输入输出及上拉定义DDRxn为方向寄存器。PORTxn为数据寄存器。DDRxn=1时,为输出状态。输出值等于PORTxn。只有DDRxn=0即管脚定义为输入状态,并且PORTxn=1,而且UPD设置为0时,上拉电阻才生效。PINxn无论在输入或输出状态都能被AVR读取。SLEEP=0时输入才能被读取。注意:如果有引脚末被使用,建议些引脚赋予一个确定电平。使能内部上拉电阻。如果刚定义了引脚的输入状态,就要立即回读,可以在回读前,插入一句_nop()。系统复位时,DDR全部为0,Port也全部为0,故上拉电阻在复位时会失效。E&CCollegeAVRTraining2005Slide20专业词汇•Embed嵌入式•Variable变量•Unsigned无符号的•Constant常量•Void空的•Port端口•Direction方向•Pull_up上拉
本文标题:AVR培训(四-MicrosoftPowerPoint
链接地址:https://www.777doc.com/doc-956998 .html