




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子竞赛之C语言应用 前言 这个ppt的重点在于讲述如何使用C语言来对SPCE061A单片机进行编程 希望这个ppt对同学们有所帮助 目录 凌阳C语言简介凌阳C语言基础C和汇编混合编程用C来直接控制硬件 凌阳C语言简介 用C语言编程的优点 寄存器分配 数据类型等由编译器管理 编程及调试的时间减少 大大缩短开发周期 明显增加软件可读性 便于改进和扩充 用C语言可以很方便地对SPCE061A进行编程 IDE直接提供了C语言的开发环境 C函数和汇编函数可以方便地进行相互调用 SoftwareLibrariesStandardClibraryHardwarelibrarySACM Sunplusaudiocodingmethod 凌阳C语言基础 unSPGCC认可的基本数据类型及其值域 数据类型应该注意的地方 char和unsignedchar为16位这与一般机器使用的GCC数据类型之间有一些差别 float与double均存储为32位浮点数unSP汇编的float与double分别是32位与64位浮点数 关于变量的signed和unsigned 如果使用signed和unsigned两种数据类型 将使存储空间成倍增长 因为使用signed和unsigned两种数据类型的库函数是不同的 使用signed和unsigned 就得同时使用这两种格式类型的库函数 最好采用unsigned格式 在编程时 如果只强调程序的运算速度而又不进行负数运算时 最好采用unsigned格式 关于实参求值顺序 unSPIDE和TurboC一样 实参的求值顺序是从右到左的 如下例 i 3 printf d d i i 输出4 3 一个例子 C和汇编混合编程 混合编程的三个方面 C调用汇编函数汇编调用C函数C中嵌入在线汇编 C调用汇编函数 要求汇编函数名也以下划线 为前缀因为C编译器产生的所有标号都以下划线 为前缀 在进行参数传递时 参数以相反的顺序 从右到左 被压入栈中 汇编函数的16位返回值存放在寄存器R1中 32位的返回值存入寄存器对R1 R2中 其中低字在R1中 高字在R2中 C调用汇编的小例子 汇编调用C小例子 C中嵌入在线汇编 在线汇编指令格式 asm 汇编指令模板 输出参数 输入参数 利用嵌入式汇编写端口寄存器 在C对P IOA Dir赋值0 x1234 则嵌入汇编的实现方式如下 asm defineP IOA Dir0 x7002 intmain void asm P IOA Dir 0 r 0 x1234 利用嵌入式汇编读端口寄存器 把P IOA Dir的值读出并保存在C中的一个int变量j里 则嵌入汇编的方式如下 asm defineP IOA Dir0 x7002 intmain void intj asm 0 P IOA Dir r j 用C来直接控制硬件 使用纯C对寄存器进行操作 defineP IOA Dir volatileunsignedint 0 x7002intmain void intj P IOA Dir 0 x1234 j P IOA Dir 用C进行IO设置 设置A口为带下拉电阻的输入 P IOA Dir 0 P IOA Attrib 0 P IOA Data 0 设置B口为同相低电平输出 P IOA Dir 0 xffff P IOB Attrib 0 xffff P IOB Data 0 用C进行系统时钟设置 defineP SystemClock volatileunsignedint 0 x7013 P SystemClock System InformationSystemInformation CPUClock 32KMode 32KStatus Fosc 用C进行系统时钟设置 CPUClock的取值可以是以下几种 C Fosc FoscC Fosc Div 2 Fosc 2C Fosc Div 4 Fosc 4C Fosc Div 8 Fosc 8 默认值 C Fosc Div 16 Fosc 16C Fosc Div 32 Fosc 32C Fosc Div 64 Fosc 64C Sleep Stop 睡眠 用C进行系统时钟设置 32KHzMode的取值可以是以下几种 C StrongMode 强振模式C AutoMode 弱振模式 默认值 32KHzSleepStatus的取值可以是以下几种 C 32K Work 睡眠时 32K时钟仍工作 默认 C 32K Off 睡眠时 32K时钟停止工作 用C进行系统时钟设置 Fosc的取值可以是以下几种 C Fosc 24M 24 576M 默认值 C Fosc 20M 20 480MC Fosc 32M 32 768MC Fosc 40M 40 960MC Fosc 49M 49 152M 用C进行系统时钟设置 这个例子是进行系统时钟设置 读者可以选择不同的Fosc CLK和CPU CLK 观察发光二极管亮灭快慢 硬件连接 A口低八位接八个共阳的发光二极管现象 根据Fosc CLK和CPU CLK的不同 观察发光二极管亮灭速度也不同 用C进行系统时钟设置 程序代码 include SPCE061V004 H voidDelay defineFosc CLK RATEC Fosc 49M Fosc defineCPU CLK RATEC Fosc Div 2 CPUClk 用C进行系统时钟设置 main unsignedintFosc CLK CPU CLK P IOA Dir 0 x00FF IOA 7 0 output P IOA Attrib 0 x00FF P IOA Data 0 用C进行系统时钟设置 Fosc CLK Fosc CLK RATE CPU CLK CPU CLK RATE P SystemClock Fosc CLK CPU CLK 用C进行系统时钟设置 while 1 P IOA Data 0 x00FF LEDoffDelay P IOA Data 0 LEDonDelay 用C写中断程序 在IDE162下 中断服务程序只能用汇编 包括嵌入式汇编 来写 在IDE180下 用户多了一种选择 那就是可以用C来写中断 用C写中断程序 用C写中断程序 要求 定时0 5s 使A口的8个二极管闪烁 分析 定时0 5s采用哪个时基信号比较方便呢 SPCE061A单片机时基信号频率丰富 有2Hz 4Hz 8Hz 16Hz 32Hz 64Hz 128Hz 256Hz 512Hz 1024H 2048Hz 4096Hz等多种频率 我们可以很明显的看出2Hz时基信号中断是最方便的 只要触发2Hz的时基信号中断 就可以达到0 5s的定时目的 用C写中断程序 include SPCE061V004 H include unSPMACRO h main INT OFF P IOA Dir 0 x00FF P IOA Attrib 0 x00FF P IOA Data 0 x0000 P INT Ctrl C IRQ5 2Hz SetupinterruptINT IRQ while 1 P Watchdog Clear C WDTCLR 用C写中断程序 include SPCE061V004 H unsignedintg uiOutput 0 x0000 voidIRQ5 void attribute ISR voidIRQ5 void if P INT Ct
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园手绘考研真题及答案
- 2025年年产xxx吨预制菜项目可行性研究报告
- 中国含氟聚合物薄膜项目创业投资方案
- SG-002工程开工申请报告
- 2025年煤矿工人考试试题及答案
- 2025年公共卫生基本知识试题库及答案
- 幼儿园2025年秋园务工作计划及行事历
- 最初级会计电算化考试卷附答案
- 中国毛细管温控器行业市场规模及投资前景预测分析报告
- 烘焙包装可行性研究报告
- 大健康项目商业计划书
- 西安教师入编协议书
- 《高龄卧床高危静脉血栓栓塞症防治中国专家共识》解读
- 比亚迪汽车出口合同协议
- 临床护理技术操作并发症与应急处理
- 2025至2030年中国LNG加气站行业深度调研及投资前景预测报告(上下卷)
- ZYJ电液转辙机的维护信号基础设备课件
- 顶板在线监测管理制度
- 大学生个人简历模板大全
- 2025年柳州铁道职业技术学院单招职业技能考试题库新版
- 招投标程序审计报告范文
评论
0/150
提交评论