作者:
nsr
等级:
遁门入道
积分:
240
分
发帖数:
67
次
网站总积分:
240
分
发送消息
加为好友
查看用户的所有发言
|
 |
Franklin c51 to ANSI c 的特点和用法 1 数据类型 增加的数据类型: Bit 由编译器定位的位变量 Sbit 由程序员定位的位变量 Sfr 由程序员定位的特殊功能寄存器名(1byte) sfr16 由程序员定位的特殊功能寄存器名(2byte) 特殊功能寄存器的定义格式: sfr 特殊功能寄存器名=地址常数; sbit 位变量名=特殊功能寄存器名^位位置; sbit 位变量名=字节地址^位位置; 特别提示:特殊功能寄存器定义语句应放在程序的开始位置,函数体之外,即应作为全局变量。 定义sfr举例: sfr PSW=0xd0 定义sbit举例: sbit C=PSW^7; 定义可位寻址变量举例: char bdata cbase; 定义sbit举例: sbit bit3= cbase^3; /*作这个定义时,要先定义变量cbase */ 2 变量定义 变量定义格式: [存储种类] 数据类型 [存储器类型] 变量名表; 存储种类: Auto 自动 extern 外部 static 静态 register 寄存器 存储器种类: Data 访问128字节内部数据存储器 bdata 访问16字节可位寻址的内部数据存储器,允许位与字节混合访问 idata 访问256字节内部数据存储器 pdata 分页访问256字节外部数据存储器,用MOVX @Ri指令 xdata 访问64k字节内部数据存储器,用MOVX @DPTR访问 code 访问64k字节程序存储器,用MOVC A+@DPTR访问 特别提示:使用存储器种类code,将在程序存储器中产生数据表,它的用途类似于汇编语言的db,dw伪指令。例如:uchar code a[5]={0xcc,0x12,0x7a,0xb5,0xfd};float code b[3]={3.345,2.474,3.248};。 C51编译器的3种存储器模式默认的存储器类型是: SMALL data COMPACT pdata LARGE xdata 3 中断服务函数 fun_type fun_name( formal_parameter ) interrupt interrupt_no using registergroup_no 其中: interrupt_no --中断号,0-31 , registergroup_no—寄存器组号,0-3 4 C51的库文件 C51S.LIB , C51FPS.LIB 小模式库 C51C.LIB , C51FPC.LIB 紧凑模式库 C51L.LIB , C51FPL.LIB 大模式库 5 混合编程 如果某一个子程序需要用汇编语言编写,可以按如下步骤进行: ① 将这一个子程序用C51编写并单独列为一个文件例如名字叫c_asm.c,在程序的开头用#pragma引用编译控制命令src,其它控制命令如果需要也可加入。 ② 单独编译c_asm.c,生成c_asm.src。 ③ 从项目中移去文件c_asm.c,同时添加文件c_asm.src,然后对c_asm.src进行修改。对c_asm.src进行修改的工作肯定要做的,不然就没有必要将c语言转变成汇编语言了。 ④ 如果需要,在项目中加入库文件 a. c51s.lib 或者 a. c51c.lib 或者 a. c51l.lib b. c51fps.lib b. c51fpc.lib, b. c51fpl.lib。 ⑤ 创建目标文件 ⑥ 按①-③编写汇编语言程序,可以可以不必记忆参数传递规则和其它一些格式方面的细节。 这是从我写的一分资料中复制过来的,如果你看起来不方便,可以给我发一个EMAIL,我将WORD文稿发给你
|
|