- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
凌阳C语言应用研讨
前言 这个ppt的重点在于讲述如何使用C语言来对SPCE061A单片机进行编程。 希望这个ppt对同学们有所帮助。 目录 凌阳C语言简介 凌阳C语言基础 C和汇编混合编程 用C来直接控制硬件 凌阳C语言简介 用C语言编程的优点 寄存器分配、数据类型等由编译器管理。 编程及调试的时间减少,大大缩短开发周期。 明显增加软件可读性,便于改进和扩充。 用C语言可以很方便地对SPCE061A进行编程 IDE直接提供了C语言的开发环境,C函数和汇编函数可以方便地进行相互调用。 Software Libraries Standard C library Hardware library SACM ( Sunplus audio coding method) 凌阳C语言基础 unSP GCC认可的基本数据类型及其值域 数据类型应该注意的地方 char和unsigned char为16位 这与一般机器使用的GCC数据类型之间有一些差别。 float与double均存储为32位浮点数 unSP汇编的float与double分别是32位与64位浮点数。 关于变量的signed和unsigned 如果使用signed和unsigned两种数据类型,将使存储空间成倍增长。 因为使用signed和unsigned两种数据类型的库函数是不同的,使用signed和unsigned,就得同时使用这两种格式类型的库函数, 最好采用unsigned格式。 在编程时,如果只强调程序的运算速度而又不进行负数运算时,最好采用unsigned格式。 关于实参求值顺序 unSP IDE和Turbo C一样,实参的求值顺序是从右到左的,如下例: i=3;printf(%d,%d,i,i++);? C和汇编混合编程 混合编程的三个方面 C调用汇编函数 汇编调用C函数 C中嵌入在线汇编 C调用汇编函数 要求汇编函数名也以下划线“_”为前缀 因为C编译器产生的所有标号都以下划线“_”为前缀。 在进行参数传递时,参数以相反的顺序(从右到左)被压入栈中。 汇编函数的16位返回值存放在寄存器R1中。32位的返回值存入寄存器对R1、R2中;其中低字在R1中,高字在R2中。 C调用汇编的小例子 汇编调用C小例子 C中嵌入在线汇编 在线汇编指令格式: asm (“汇编指令模板”:输出参数:输入参数) 利用嵌入式汇编写端口寄存器 在C对P_IOA_Dir赋值0x1234,则嵌入汇编的实现方式如下: asm(“.define P_IOA_Dir 0x7002”); int main(void) { asm([P_IOA_Dir] = %0 : : r(0x1234)); } 利用嵌入式汇编读端口寄存器 把P_IOA_Dir的值读出并保存在C中的一个int变量j里 ,则嵌入汇编的方式如下: asm(“.define P_IOA_Dir 0x7002”); int main(void) { int j; asm(%0 = [P_IOA_Dir] : =r(j)); } 用C来直接控制硬件 使用纯C对寄存器进行操作 #define P_IOA_Dir (volatile unsigned int *)0x7002 int main(void) { int j; * P_IOA_Dir=0x1234; j= * P_IOA_Dir; } 用C进行IO设置 //设置A口为带下拉电阻的输入 *P_IOA_Dir =0; *P_IOA_Attrib =0; *P_IOA_Data =0; ? //设置B口为同相低电平输出 *P_IOA_Dir =0xffff; *P_IOB_Attrib =0xffff; *P_IOB_Data =0; 用C进行系统时钟设置 #define P_SystemClock (volatile unsigned int *)0x7013 ?*P_SystemClock = System_Information System Information = CPU Clock + 32K Mode + 32K Status + Fosc 用C进行系统时钟设置 CPU Clock的取值可以是以下几种: C_Fosc ? Fosc C_Fosc_Div_2 ? Fosc/2 C_Fosc_Div_4 ? Fosc/4 C_Fosc_Div_8 ? Fosc/8 (默认值) C_Fosc_Div_16 ? Fosc/16 C_Fosc_Div_32
文档评论(0)