《《C51运算符》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《C51运算符》PPT课件.ppt(22页珍藏版)》请在装配图网上搜索。

1、单片微机原理及应用教学课件,第六讲:C-51程序设计,本讲重点: C-51的数据类型和存储类型; 指针和中断的使用; 通过实例消化理解C-51的编程方法; 尝试将实验课中的ASM-51程序转为C-51程序.,单片微机原理及应用教学课件,C语言作为一种非常方便的语言而得到广泛的支持, C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。 C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。, C-51简介,单片微机原理及应用教学课件,C-51与ASM-51相比,有如下优点: 1.对单片机的指令系统不要求了解,仅要求对805。

2、1 的存贮器结构有初步了解; 2.寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理; 3.程序有规范的结构,可分成不同的函数,这种方式可使程序结构化; 4.具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性; 5.提供的库包含许多标准子程序,具有较强的数据处理能力; 6.由于具有方便的模块化编程技术,使已编好程序可容量地植入新程序;,单片微机原理及应用教学课件, C51的数据类型 常用的数据类型有:, C51的程序结构 与一般C语言的结构相同,以main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。,位型 字符型 整型 长整型 浮点型 bit char in。

3、t long int float 1位 1字节 2字节 4字节 4字节,数组型 指针型,单片微机原理及应用教学课件, C-51数据的存储类型,名 存储空间位置 长度 数据范围 data 直接寻址片内RAM 8位 0255 bdata 可位寻址片内RAM 1位 0/1 idata 间接寻址片内RAM 8位 0255 xdata 片外RAM 16位 065535, C-51的包含的头文件,通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h (定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算);,单片微机。

4、原理及应用教学课件, C-51的运算符 与C语言基本相同: + - * / (加 减 乘 除) = (位右移 位左移) 指向字形口 MOV A,#80H;确定字形代码 MOVX R0,A ;输出字形代码 MOV R1,#0DDH ;指向字位口 MOV A,#20H;从最高位开始 LEDO: MOVX R1,A;输出字位代码 MOV R2,#18H;确定延时常数 ACALL DEYS;调延时子程序 RL A;右移一位 SJMP LEDO;循环演示,; 延时子程序 DEYS: PUSH 02H DEY0: PUSH 02H DEY1: PUSH 02H DJNZ R2,$ POP 02H DJNZ。

5、 R2,DEY1 POP 02H DJNZ R2,DEY0 POP 02H DJNZ R2,DEYS RET END,例1.“8”字符循环演示 (字形口为DCH; 字位口为DDH) 汇编语言程序,单片微机原理及应用教学课件,#include #include #define uchar unsigned char /* 字形口 */ #define PORTA XBYTE0 xffdc /* 字位口 */ #define PORTB XBYTE0 xffdd /* 延时 1MS子程序 */ void msce(unsigned int x) unsigned char j; while(x-)。

6、!=0) for(j=0;j60;j+); ,main( ) uchar rr,i; for(;) rr=0 x01;/* 从最右一位开始 */ for(i=0;i6;i+) PORTA =0 x80;/*输出字形代码*/ PORTB =rr; /*输出字位代码*/ msce(150); /*调延时子程序*/ rr=rr1; /*循环左移一位*/ , “8”字符循环演示的C51程序,单片微机原理及应用教学课件, C51程序 #include main( ) int i; unsigned char xdata *p=0 x2000; /* 指针指向2000H单元 */ for(i=0;i256。

7、;i+) /*清零2000H-20FFH单元*/ *p=0; p+; ,例2.清零程序 (将2000H20FFH的内容清零) 汇编语言程序 ORG 0000H SE01: MOV R0,#00H MOV DPTR,#2000H ;(0000H)送DPTR LOO1: CLR A MOVX DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1 INC R0 ;字节数加1 CJNE R0,#00H,LOO1 ;不到FF个字节再清 LOOP: SJMP LOOP,单片微机原理及应用教学课件,例3.拆字程序 (将2000H的内容拆开,高位送2001H低位,低位送2002H低位) 汇编语言。

8、程序 ORG 0000H SE02: MOV DPTR,#2000H MOVX A,DPTR MOV B,A ;(2000)AB SWAP A ;交换 ANL A,#0FH ;屏敝高位 INC DPTR MOVX DPTR,A ;送2001H INC DPTR MOV A,B ANL A,#0FH ;(2000)内容屏敝高位 MOVX DPTR,A ;送2002H SJMP $,单片微机原理及应用教学课件,拆字C51程序 #include main( ) unsigned char xdata *p=0 x2000;/*指针指向2000H单元*/ /* 2002H单元高4位清零,低4位装200。

9、0H单元低4位 */ *(p+2)=(*p) ,单片微机原理及应用教学课件, 汇编语言程序 ORG 0000H L00: MOV R0,#10H ;查找16个字节 MOV R1,#00H MOV DPTR,#2000H L11: MOVX A,DPTR CJNE A,#00H,L16 ;取出内容与00H相等吗? INC R1 ;取出个数加1 L16: INC DPTR DJNZ R0,L11 ;未完继续 MOV DPTR,#2100H MOV A,R1 MOVX DPTR,A ;相同数个数送2100H L1E: SJMP L1E,例4.查找零的个数(在2000H-200FH中查出有几个字 节是。

10、零,把个数放在2100H单元中),单片微机原理及应用教学课件,查找零的个数C51程序 #include main ( ) unsigned char xdata *p=0 x2000;/*指针p指向2000H单元*/ int n=0,i; for(i=0;i16;i+) if(*p=0) n+; /* 若该单元内容为零,则n+1 */ p+; /* 指针指向下一单元 */ p=0 x2100; /* 指针p指向2100H单元 */ *p=n; /* 把个数放在2100H单元中 */ ,单片微机原理及应用教学课件, 汇编程序 ORG 0000H MOV A,R3 MOV B,R7 MUL AB 。

11、;R3*R7 XCH A,R7 ;R7=(R3*R7)低字节 MOV R5,B ;R5=(R3*R7)高字节 MOV B,R2 MUL AB ;R2*R7 ADD A,R5 MOV R4,A CLR A ADDC A,B MOV R5,A ;R5=(R2*R7)高字节 MOV A,R6 MOV B,R3 MUL AB ;R3*R6,ADD A,R4 XCH A,B ADDC A,R5 MOV R5,A MOV PSW.5,C ;存CY MOV A,R2 MUL AB ;R2*R6 ADD A,R5 MOV R5,A CLR A MOV ACC.0,C MOV C,PSW.5 ;加上次加法的位 。

12、ADDC A,B MOV R4,A JMP $,例5.双字节无符号整数快速乘法,单片微机原理及应用教学课件, C51程序 #include main( ) unsigned int xdata *p1=0 x2000;/*双字节被乘数在2000H单元*/ unsigned int xdata *p2=0 x2002;/*双字节乘数在2002H单元 */ unsigned long xdata *p3=0 x2010;/*4字节乘积放在2010H单元*/ *p3=(*p1)*(*p2); ,单片微机原理及应用教学课件,例6.工业顺序控制C-51程序 #include sbit P1_7=0 x9。

13、7; /* 定义P1.7口地址 */ unsigned char TT; void Delay(unsigned int value) /* 延时子程序*/ while(value!=0) value-; void Serint1()interrupt 2 /*中断服务程序-暂停并报警*/ int i; TT=P1; /* 保护现场 */ P1=0 x7f; /* 关输出 */ while(!INT1) /* 若故障未消除,则报警 */ for(i=0;i0 xa0;i+) /* 给蜂鸣器发震荡脉冲 */ P1_7=1;Delay(50); P1_7=0;Delay(50); P1_7=0;D。

14、elay(6550); P1=TT; /*恢复现场 */ ,单片微机原理及应用教学课件,main ( ) IE=0 x84; /* CPU开中断,INT1开中断 */ while(T0=0); /* 等待P3.4变高 */ for(;) P1=0 xfe; Delay(60000); /* 工序1 */ P1=0 xfd; Delay(60000); /* 工序2 */ P1=0 xfb; Delay(60000); /* 工序3 */ P1=0 xf7; Delay(60000); /* 工序4 */ P1=0 xef; Delay(60000); /* 工序5 */ P1=0 xdf; D。

15、elay(60000); /* 工序6 */ P1=0 x8f; Delay(60000); /* 工序7 */ ,(续前),单片微机原理及应用教学课件,例7.电脑时钟 (用定时器产生0.1秒定时中断,对时钟计数器计数并送数码管显示) C51程序 #include #include #define uchar unsigned char #define LEDwp XBYTE0 xffdc #define LEDwb XBYTE0 xffdd uchar code table10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x。

16、90; uchar hour=1,min=23,sec=45,m=0,n,i; /* 给时钟赋初值 */ uchar xdata *p; void Delay(unsigned int value) /*延时子程序*/ while(value!=0) value-;,单片微机原理及应用教学课件,void Trans(void) /*时间数据转换子程序*/ if(sec=60) min+;sec=0; if(min=60) hour+;min=0; if(hour=24) hour=0; *(p+0)=hour/10; /* 时的十分位 */ *(p+1)=hour%10; /* 时的个位*/ 。

17、*(p+2)=min/10; /* 分的十分位 */ *(p+3)=min%10; /* 分的个位 */ *(p+4)=sec/10; /* 秒的十分位 */ *(p+5)=sec%10; /* 秒的个位 */ void Show(void) /*循环显示子程序*/ for(;) Trans( ); LEDwb=n=0 x20; for(i=0;i1; ,单片微机原理及应用教学课件,/* 中断服务子程序(0.1秒中断一次) */ void time() interrupt 1 m+; TH0=0 x3c; TL0=0 xb7; /* 给 T0 赋计数初值 */ if(m=10) sec=sec+1; m=0; main( ) p=0 x2000; TMOD=0X01; /* T/C0工作在定时器方式1 */ TH0=0 x3c; TL0=0 xb7; /* 给 T0 赋计数初值 */ EA=1; /* CPU开中断 */ TR0=1; /* 启动T/C0开始定时 */ ET0=1; /* T/C0开中断 */ Show( ); ,单片微机原理及应用教学课件,OVER。

c语言拆字程序2000h单元,《C51运算符》PPT课件.ppt相关推荐

  1. C语言输入Aa1Bb2Cc3,《C语言基础知识》PPT课件.ppt

    <C语言基础知识>PPT课件.ppt 1,数据结构与算法C语言的基础知识,2,主要内容,C语言简介数据类型与声明运算符与表达式数组指针结构体,3,简单的C语言源程序,#includestd ...

  2. c语言结构体与共同体课件,《结构体与共同体》PPT课件.ppt

    <<结构体与共同体>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<结构体与共同体>PPT课件.ppt(44页珍藏版)>请在装配图网上搜索. 1 ...

  3. c语言用分支结构判断最大字符,第3章C语言 分支结构PPT课件.ppt

    <第3章C语言 分支结构PPT课件.ppt>由会员分享,可在线阅读,更多相关<第3章C语言 分支结构PPT课件.ppt(36页珍藏版)>请在人人文库网上搜索. 1.第三章 分支 ...

  4. c语言程序设计教程北京大学,C语言程序设计教程北京大学第章ppt课件.ppt

    <C语言程序设计教程北京大学第章ppt课件.ppt>由会员分享,可在线阅读,更多相关<C语言程序设计教程北京大学第章ppt课件.ppt(31页珍藏版)>请在人人文库网上搜索. ...

  5. 模数转换实验中断方式c语言,《数模和模数转换》PPT课件.ppt

    <<数模和模数转换>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<数模和模数转换>PPT课件.ppt(35页珍藏版)>请在装配图网上搜索. 1 ...

  6. c语言 函数 ppt,《C语言函数》PPT课件.ppt

    <<C语言函数>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<C语言函数>PPT课件.ppt(17页珍藏版)>请在装配图网上搜索. 1.回顾 ...

  7. c语言链表ppt,C语言链表ppt课件.ppt

    C语言链表ppt课件.ppt 第十一章 链表,1,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻两结点间用一 ...

  8. C语言实验系统PPT展示,c语言第四谭浩强机实验课件.ppt

    c语言第四谭浩强机实验课件.ppt 名人名言,"人最宝贵的东西是生命,生命属于我们只有一次.人的一生应当这样度过当他回首往事时,他不因虚度年华而悔恨,也不因碌碌无为而羞愧.这样在他临死的时候 ...

  9. java 课件ppt_《java语言入门》PPT课件.ppt

    <java语言入门>PPT课件.ppt Java 语言入门,第一章,目标,了解Java开发环境 JDK 掌握Java程序开发过程 能默写两个版本的"Hello World&quo ...

最新文章

  1. Linux下golang开发环境搭建
  2. JSF, MyFaces, RichFaces 和 Facelets的区别
  3. 如何使用1Password,Authy和Privacy.com外包您的在线安全性
  4. SQL基础E-R图画法(二)
  5. php接收vb post数据,VB Post方式提取网页数据
  6. Docker两种方式进入后台运行的容器
  7. SP2010开发和VS2010专家食谱--第七章节--使用客户端对象模型
  8. 机器视觉软件工程师的生活是怎样的?
  9. Kettle下载与安装教程【保姆版】
  10. 数据库如何避免读取脏数据?
  11. c#练习——简单的文字编辑器
  12. C++网站如何实现短信验证码功能?
  13. 算法及其复杂性分析整理
  14. CancelledError: [_Derived_]RecvAsync is cancelled.
  15. java 区分中英文_在java中如何判断一个字符串是中文的还是英文的
  16. 天津大学仁爱学院ACM工作室介绍
  17. (不定期更新)《虚拟现实应用技术》(Yanlz+Unity+XR+VR+AR+MR+AVE+Oculus+SteamVR+眩晕症+5G+云计算+边缘计算+人机交互+立钻哥哥+==)
  18. 内存频率,CPU频率,主板频率之间的制约
  19. java调用dll 指针参数_java调用c dll,指针参数和结构体参数搞定
  20. 电视机显示服务器加扰是什么意思,有线电视显示节目被加扰,是什么意思?是没费 – 手机爱问...

热门文章

  1. 数据管理解决方案 | 零售行业如何搭建全渠道大数据平台?
  2. 使用Matlab绘制三维空间中的任意圆(参数方程/坐标转换)
  3. 如何用代码实现抖音的图片旋转
  4. 各种Sensor传感器
  5. 关于Vue的就地复用
  6. 利用绝对值函数以及三目运算符简便打印菱形字母塔
  7. 800万商户都在抖音开通了企业号建立了私域流量新领地,你还在等什么
  8. 技术精湛,保障有力!麒麟信安获国网重庆市电力公司感谢信
  9. python 批量下载知网(CNKI)论文
  10. 9月16日计算机视觉基础学习笔记——认识机器视觉