第03章单片机C语言程序的设计.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第03章单片机C语言程序的设计

3.1汇编语言与C语言 汇编语言 直接操作单片机的硬件资源,执行速度快,编写的程序实时性好,代码效率高; 由于早期的单片机存储器(包括数据存储器和程序存储器)容量较小,处理器速度较慢,因而早期单片机程序设计广泛采用汇编语言。 C语言 编程效率高,移植性好; 单片机程序设计逐步从汇编语言过渡到C语言。 3.1汇编语言与C语言 以MCS-51及其兼容的单片机为目标处理器的C语言称为C51 。 支持C51的单片机开发平台 德国的KEIL:代码紧凑,使用方便; 瑞典的IAR:性能好,资料丰富。 3.1汇编语言与C语言 汇编语言冒泡法排序程序 N EQU 10 ;定义数据长度 FIR EQU 40H ;定义数据起始地址 ORG 0000H ;定义程序起始地址 LJMP GO ;转移到主程序 TABL:DB 113,5,22,12,32,233,1 ;定义数据表格 DB 21,129,3 ;数组元素表 GO: MOV DPTR,#TABL ;设置数据指针 MOV R0,#FIR ;设置数据起始地址 MOV R7,#N ;设置数据长度 3.1汇编语言与C语言 VALU:MOV A,#0 ;累加器清零 MOVC A,@A+DPTR ;读取第0个数据 MOV @R0,A ;送入内部RAM INC R0 ;内部RAM数据指针加1 INC DPTR ;ROM数据指针加1 DJNZ R7,VALU ;判断数据传送是否结束 CALL SORT ;调用排序子程序 SJMP $ ;无限循环 3.1汇编语言与C语言 SORT: ;排序 MOV R7,#N -1 ;外循环数 CLR F0 ;清交换标志为0 NEXT0: MOV A,R7 ;取外循环数 JZ EXIT ;只一个元素,退出 MOV R6,A ;内循环数 MOV R0,#FIR ;R0指向第一个元素 NEXT1: MOV A,@R0 ;取一个字节 INC R0 ;数据指针加1 MOV B,@R0 ;取后一个数 CJNE A,B,L1 ;两个相邻字节比较 SJMP L2 ;相等,不必交换 3.1汇编语言与C语言 L1: JC L2 ;前一个小于后一个,符合增序 XCH A,@R0 ;前一个大于后一个,交换 DEC R0 ;数据指针前移一位 MOV @R0,A ;小数存放前地址 INC R0 ;数据指针后移一位 SETB F0 ;设置交换标志为1 L2: DJNZ R6,NEXT1 ;内循环是否结束? JNB F0,EXIT ;无交换,提前结束 DJNZ R7,NEXT0 ;外循环是否结束? EXIT: RET ;子程序返回 END ;汇编结束 3.1汇编语言与C语言 C51冒泡排序程序 #include reg51.h //定义头文件 #define uchar unsigned char //定义常量 uchar A[10]= {113,5,22,12,32,233,1,21,129,3} ; //定义变量、数组 void taxisfun () //排序函数 { uchar i,j,Temp; //定义局部变量 for (i=0; i=8; i++) //设置外循环 { for (j=0; j=8-i; j++) //设置内循环 { if (A[j+1]A[j]) //当后一个数大于前一个数 { Temp = A[j]; //前后 2 数交换,前数送临时变量 A[j] = A[j+1]; //后数送前数 A[j+1] = Temp; //临时变量送后数 } } } } 3.1汇编语言与C语言 void main(void) //主程序 { taxisfun (); //函数调用 while(1) ; //无限循环 } 3.2 C51基本元素 3.2.1 关键字 关键字又称保留字,是在程序中有特定意义的字符或字符串,它是C51规定的特定

文档评论(0)

erterye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档