欢迎来到天天文库
浏览记录
ID:46570455
大小:495.00 KB
页数:30页
时间:2019-11-25
《第6章 C语言程序设计(修改)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章C/C++语言程序设计6.2C55xC/C++语言编程基础数据类型关键字存储器分配中断处理一、数据类型C55xC语言支持的数据类型:类型长度(位)内容最小值最大值字符型、带符号字符型16ASCII码-3276832767无符号字符型16ASCII码065535短整型、带符号短整型16二进制补码-3276832767无符号短整型16二进制数065535整型、带符号整型16二进制补码-3276832767无符号整型16二进制数065535长整型、带符号长整型32二进制补码-21474836482147483647无符号长整型32二进制数04294967295类型长度
2、(位)内容最小值最大值带符号特长整型40二进制补码-5.49756E+115.49756E+11无符号特长整型40二进制数01.09951E+12枚举16二进制补码-3276832767浮点3232位IEEE1.18E-383.40E+38双精度3232位IEEE1.18E-383.40E+38长双精度3232位IEEE1.18E-383.40E+38数据指针(小存储器模式)16二进制数00xFFFF数据指针(大存储器模式)23二进制数00x7FFFFF程序指针24二进制数00xFFFFFF二、关键字1.const----定义常量2.ioport----对I/O寻址例
3、6-1,ioport关键字的使用。ioportintk;/*正确*/voidfoo(void){ioportinti;/*错误*/ioportint*j;/*正确*/}二、关键字----定义中断函数----声明一个特殊指针3.interrupt4.onchip例6-2onchip关键字的使用onchipintx[100];/*数组声明*/onchipint*p;/*指针声明*/5.volatile----存储器访问定义格式:register变量类型变量名变量类型:整型、浮点型和指针类型二、关键字6.register----定义寄存器变量和参数7.asm----插入一条
4、汇编指令指令格式:asm(“assemblertext”);三、存储器模式编译器支持两种存储器模型:小存储模式大存储器模式链接器不允许同时存在大存储器模式和小存储器模式。1.小存储器模式(默认模式)在单页(64KB)存储器内的以下段必须都分配合适:.bss和.data段(所有静态和全局数据)。.stack和sysstack段(第一和第二系统堆栈)。.sysmem段(动态存储空间)。.const段。对.text段(代码)、.switch段(switch语句)和.cinit段(变量初始化)的大小和位置没有限制。编译器使用16位数据指针来访问数据。XARn寄存器的高7位用来
5、设置指向包含.bss段的存储页。2.大存储器模式数据指针为23位,在存储器中占2字空间。.stack和.sysstack段必须在同一页上。编译代码时,必须和rts55x.lib运行时间库链接。应用程序中的所有文件都必须使用相同的存储器模式。四、存储器分配初始化段功能存储器类型未初始化段功能存储器类型.text可执行代码ROM/RAM.bss为全局和静态变量保留空间RAM.cinit初始化数据表和常数ROM/RAM.stack为C系统堆栈分配存储地址RAM.const用const定义的常量ROM/RAM.sysstack为第二系统堆栈分配存储地址RAM.switchsw
6、itch语句所用表ROM/RAM.sysmem为动态存储分配保留空间RAM.dataC编译器并不使用ROM/RAM.cio支持CI/ORAM.pinit实时运行时调用的数据表格ROM/RAM五、中断处理1.关于中断的几个要点④中断服务程序不能被普通C代码调用。②关键字例6-3:中断服务程序voidINTR_init(void){IVPD=0xd0;IVPH=0xd0;IER0=0x10;DBIER0=0x10;IFR0=0xffff;asm("BCLRINTM");}interruptvoidtimer(){...}③无参数①设置中断寄存器IER0⑤在汇编语言中,中断
7、程序名前加下划线,如_timer。⑥中断处理程序可以处理单个中断或多个中断,c_int00除外五、中断处理⑦通过.sect指令创建中断向量表。.sect".vectors".ref_c_int00.ref_timerrsv:B_c_int00NOP.align8nmi:.loop8nop.endloopint0:.loop8nop.endloopint2:B_timernop.align8tint:B_timernop.align8…⑧保存中断入口的现场信息(所用寄存器或全部寄存器)6.5C55xC和汇编语言混合编程寄存器规则函数结构和调用规则C和汇
此文档下载收益归作者所有