程序设计实践_第1页
程序设计实践_第2页
程序设计实践_第3页
程序设计实践_第4页
程序设计实践_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第4章 程序设计实践2 2注释注释伪指令伪指令操作码操作数 工作寄存器名 SFR名 标号名 常数十进制十六进制(H)二进制(B)立即数加# $ 表达式语句标号C版本3 3程序的仿真运行4 4汇编中的伪指令5 5l ORG,汇编起始命令ORG30HMAIN: MOVP2, #00Hl END,汇编结束命令 其后的语句均不予以汇编l EQU,赋值命令 相当于C中 #define AA R1AAEQUR1MOVA, AAl DATA,数据地址赋值命令 相当于C中声明变量X DATA 40HP0 DATA 80HMOVX, #100MOVP0, Al DB,定义字节命令ORG2000HDB 12H,

2、34H, 56H, 78H, ABCl DW,定义字命令ORG1500HTABLE: DW 1234H, 56H, 78Hl DS,定义存储空间,类似C中的malloc函数ORG1000HDS08HDB30H, 31Hl BIT,位地址符号命令FLAG1 BIT02HFLAG1 BIT20H.2A1BITP1.1; 91H90H.16 6结构化的程序设计l 顺序l 选择7 7if(myvar!=0 x0f)P2=0;elseP2=0 xff;MOV A, myvarCJNE A, #0FH, S1MOV P2, #0FFHSJMP S2S1:MOV P2, #00HS2:l 循环8 8sum=

3、0;for(i=1;i=10;i+)sum+=i;CLRAMOVR6, #10S1:ADDA, R6DJNZR6, S1函数l 例:双字节的加法,678+876=15549 9mov r2, #02h mov r3, #0a6h mov r4, #03h mov r5, #6ch lcall myaddmyadd: mov a,r5add a,r3mov r7,amov a,r4addc a,r2mov r6,aret 功能:双字节整数的加法 入口与出口:R2R3+R4R5=R6R7 用到的寄存器:A 02 A6+ 03 6C 06 12 实验一:实验一:HELLO WORLD!l Hello

4、 world!是什么? 开发环境的测试l 实验设备清单 CPU板(最小系统) 接口实验板 EC2-N1调试器 电源 排线1010 原理图 芯片手册C8051F023 Keil开发环境 例程实验板的最小系统(CPU板)1111MCUC8051F0239V电源插头JTAG调试器接口扩展接口串口最小系统电路图1212步骤一:对照步骤一:对照电路图电路图认识最小系统的各个组成部分认识最小系统的各个组成部分步骤二:最小系统测试1. 连接调试器与电脑2. 检查硬件连接无误,接通电源适配器3. 打开keil开发环境 新建工程 设备(device)选择:Silicon Laboratories, Inc.公司

5、的C8051F023,不添加startup code 新建并保存文件,扩展名.asm 键入源程序,保存; 向工程中添加文件1313 编译程序 检查工程的选项 晶振选6M Debug选Silicon LaboratoriesC8051FXXX uVision 调试程序 观察程序存储器和片内RAM存储器1414ORG 0000HMAIN:MOV 08H, #1MOV 09H, #2MOV A, 08HADDA, 09HMOV 10H, ASJMP $END步骤三:Hello world1515点亮这盏灯IO实验板电路图16161717P1.0Vcc$INCLUDE(C8051F020.INC)OR

6、G 0000HSJMP STARTORG 0030HSTART:MOV WDTCN, #0DEHMOV WDTCN, #0ADHMOV XBR0, #04HMOV XBR1, #1EHMOV XBR2, #40HLOOP:CPLP1.0LCALLDELAYLJMP LOOPDELAY:MOV R0, #255DELAY1:MOV R1, #0FFHDJNZ R1, $DJNZ R0, DELAY1 RETEND1818C51程序设计程序设计1919为什么使用为什么使用C语言语言l所谓所谓“高级语言高级语言”类似自然语言,工程人员更加容易掌握。 1957年,John Backus,Formula

7、translator Beginners All-purpose Symbolic Instruction Code Pascal、C掩盖细节,更关注于算法本身 汇编语言站在机器的角度,更多考虑如何算 C语言站在人的角度,更关心算什么2020int x=678+876;long y=678*876;Float z=6.78*8.76;使用使用C语言的好处语言的好处l C是一种介于高级语言和汇编之间的语言。 体现在地址、位运算、+、-等方面。l C能更好地体现结构化编程的思想。 顺序、循环、选择以及函数的使用等。l 更便于移植 AT89C52程序能否用于C8051F026或ADC841? 51的

8、汇编程序能否用于PIC、飞思卡尔、MSP430等芯片或用于ARM芯片? C51程序能否移植于PIC、飞思卡尔、MSP430等芯片或用于ARM芯片?2121C51和普通和普通C语言有何不同?语言有何不同?l C51是C语言的一个子集,语法与ANSI C,Turbo C、C+基本相同。 数据类型与基本计算 数值型数据、字符型数据、数组、指针、结构体等 算术运算、关系运算、逻辑运算 结构化编程 顺序 选择 循环 函数的使用2222基本数据类型2323文本文本 char数值数值整数整数int实数实数短整型短整型 short长整型长整型 long有符号有符号signed无符号无符号unsigned单精度

9、单精度float双精度双精度double有符号有符号signed无符号无符号unsigned基本数据类型基本数据类型bit型型变量变量2424类型类型位数位数范围范围bit101charunsigned char80255signed char-128127intunsigned short16065535signed short-3276832767unsigned long3204294967295signed long-21474836482147483647float32(3.410-38 3.410+38)double64(1.710-308 1.710+308)规则l C51中的i

10、nt是2字节的short。l 在C51中,不同类型的数据的运算,使用不同的库函数,因此,程序中使用的数据类型越少越好。 尽量使用短的数据类型,尽量使用无符号数,尽量不要同时使用有符号数和无符号数;UINT8、UINT16、UINT32 等不是新出现的类型typedef unsigned char UINT8;#define UINT8 unsigned char 尽量不使用浮点数。2525数据的存储类型2626data片内数据存储区(对应片内数据存储区(对应MOV)bdata可位寻址片内可位寻址片内RAMidata间接寻址片内数据存储区(对应间接寻址片内数据存储区(对应MOV Ri),),可访

11、问片内全部可访问片内全部RAM空间空间xdata片外数据存储区,(对应片外数据存储区,(对应MOVX DPTR)pdata分页寻址片外数据存储区(对应分页寻址片外数据存储区(对应MOVX R0)code代码存储区(对应代码存储区(对应MOVC DPTR),), char data x;x=100; / MOV 0 x08, #0 x64 data char x; data char x=100; 2727char xdata y=100;/MOV DPTR, #0 x8000/MOV A, 0 x64/MOVX DPTR, Achar code M=100;/M是符号常量不能再赋值是符号常量不

12、能再赋值char x=M;/MOV DPTR, #0 x8014/CLR A/MOVC A, A+DPTR/MOV 0 x08, Aint idata x=100;/MOV R0, #0 x90/MOV R0, #0 x00/INCR0/MOV R0, 0 x64bit bdata flags=1;/SETB 0 x20.0char pdata d=100;/MOV R0, 0 x00/MOV A, 0 x64/MOVX R0, A/100被存在被存在0 xff00存储模式说明 SMALL:默认存储类型是:默认存储类型是data例如:在例如:在SMALL模式下,模式下,int a; int d

13、ata a; COMPACT:默认存储类型是:默认存储类型是pdata LARGE:默认存储类型是:默认存储类型是xdata2828SFR的定义l 例如:sfr P0=0 x80; P0 DATA 80HMOV P0, #0FFH实质是MOV 80H, #0FFHl 一般将SFR的定义集中放在一个头文件里 汇编:$ C8051F020.INC C:#include 特别是标准51中没有的寄存器,如sfr ADCCON1=0 xef;l 16位的SFR,如: sfr16 DPTR=0 x82;DPTR=0 x1234; 则82H的位置存放了34,83H的位置存放12。2929C51的位定义303

14、0l 例:sfr PSW=0 xD0;sbit OV=PSW2;sbit CY=PSW7;或者:sbit OV=0 xD02;sbit CY =0 xD07;或者用位地址:sbit OV=0 xD2;sbit CY =0 xD7;l 例:bdata int ibase;bdata char bary4;sbit mybit0=ibase0;sbit mybit15=ibase15;sbit Ary07=bary07;sbit Ary37=bary37;赋值:Ary37=0;bary3=a;C51中的数组及指针3131lint idata a6=0,1,2,3,4,5;l字模举例:char co

15、de GB_16 = / 显示为16*160 x01,0 x00,0 x01,0 x00,0 x21,0 x08,0 x3F,0 xFC,0 x21,0 x08,0 x21,0 x08,0 x21,0 x08,0 x21,0 x08,0 x21,0 x08,0 x3F,0 xF8,0 x21,0 x08,0 x01,0 x00,0 x01,0 x00,0 x01,0 x00,0 x01,0 x00,0 x01,0 x00,0 x02,0 x00,0 x01,0 x00,0 x01,0 x00,0 xFF,0 xFE,0 x08,0 x20,0 x08,0 x20,0 x08,0 x20,0 x

16、04,0 x40,0 x04,0 x40,0 x02,0 x80,0 x01,0 x00,0 x02,0 x80,0 x04,0 x60,0 x18,0 x1E,0 xE0,0 x08,0 x00,0 x00,0 x40,0 x02,0 x27,0 xC2,0 x24,0 x42,0 x84,0 x52,0 x45,0 x52,0 x55,0 x52,0 x15,0 x52,0 x25,0 x52,0 x25,0 x52,0 x25,0 x52,0 xC5,0 x52,0 x41,0 x02,0 x42,0 x82,0 x42,0 x42,0 x44,0 x4A,0 x48,0 x04,0 x00,0 x20,0 x40,0 x28,0 x20,0 x24,0 x30,0 x24,0 x27,0 xFE,0 x00,0 x20,0 xE0,0 x20,0 x27,0 xE0,0 x21,0 x20,0 x21,0 x10,0 x21,0 x10,0 x21,0 x0A,0 x29,0 xCA,0 x36,0 x06,0 x20,0 x02,0 x00,0 x00,;C51的运算符与表达式l 基本算术运算符:+、-、*、/、l 关系运算符:、=、=、=、!=l 逻辑运算符:&、|、!l 位操作:&am

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论