单片机c语言基础知识_单片机编程代码大全

单片机c语言基础知识_单片机编程代码大全单片机续集第3,4章(图文+课后答案)C51语言编程基础与汇编语言相比, C51语言具有_可读性好,可移植性好,模块化开发与资源共享,生成的代码效率高等优点一.1. C51的程序结构① 程序由函数组成(一个主函数,或一个主函数和若干自定义函数);②

单片机续集第3,4章(图文+课后答案)   C51语言编程基础   与汇编语言相比, C51语言具有_可读性好,可移植性好,模块化开发与资源共享,生成的代码效率高等优点   一.1. C51的程序结构
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   ① 程序由函数组成(一个主函数,或一个主函数和若干自定义函数);   ② 利用预处理命令对变量或函数进行集中定义或说明;   ③ 函数和变量都需遵循先定义后使用的基本原则;   ④ 主函数中的所有语句执行完毕,则程序结束。   例如:
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全 C51的变量   在程序执行过程中,数值可以发生改变的量称为变量。
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   数据类型:有符号数类型可以忽略signed标识符
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   C51扩充数据类型:bit、sfr或sfr16、sbit用bit 定义一个位变量,语法规则如下:bit bit_name [= 常数0~1];   例如:bit door = 0 ; //定义一个叫door的变量且初值为0   注意:利用bit可以定义一个位变量或位函数,但不能定义位指针,也不能定义位数组。   例如:bit gate=0;   (2)sfr定义特殊功能寄存器SFR,语法规则如下:   sfr 或 sfr16 sfr_name = 字节地址常数;   例如,sfr P0 = 0x80; //定义P0口地址80H   sfr PCON = 0x87; //定义PCON地址87H   sfr16 DPTR=0x82; //定义DPTR的低端地址82H
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   (3)sbit型   将SFR范围内的位地址(0x80~0xFF)定义为位变量   sbit bit_name = 位地址常数;   将位于SFR字节地址内的绝对位地址定义为位变量名。   sbit bit_name = sfr_name ^ 位位置;   将已有定义的SFR的0~7位定义为位变量名。   例如: sfr PSW = 0xD0;   sbit CY = PSW^7;
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   sbit CY = 0xD0^7;
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   (4)C51存储器类型与存储空间的对应关系:
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   unsigned char bdata status_byte; //定义status_byte为无符号字符型自动变量,该变量位于bdata区   unsigned int code unit_id[2]={0x1234, 0x89ab}; //定义unit_id[2]为无符号整型自动变量,该变量位于code区中,是长度为2的数组,且初值为0x1234和0x89ab。   static char m, n; //定义m和n为2个位于data区中的有符号字符型静态变量   C51语言访问绝对地址   1. 绝对宏   C51编译器提供了一组宏定义来对code、data、pdata和xdata空间进行绝对寻址。在程序中,用“#include<absacc.h>”来对absacc.h中声明的宏来访问绝对地址,包括CBYTE、CWORD、DBYTE、DWORD、XBYTE、XWORD、PBYTE、PWORD,其中:、库函数中访问存储器宏的原型   C51编译器提供了两组用指针定义的绝对存储器访问的宏,其原型如下。   1)按字节访问存储器的宏:   #define CBYTE ((unsigned char volatile code*)0)   #define DBYTE ((unsigned char volatile data*)0)   #define PBYTE ((unsigned char volatile pdata*)0)   #define XBYTE ((unsigned char volatile xdata*)0) 按整型双字节访问存储器的宏:   #define CWORD ((unsigned int volatile code*)0)   #define DWORD ((unsigned int volatile data*)0)   #define PWORD ((unsigned int volatile pdata*)0)   #define XWORD ((unsigned int volatile xdata*)0)   无idata型,不能访问片内RAM高128字节区域(0x80~0xff),需要时可以自己定义。   这些宏定义原型放在absacc.h文件中,使用时需要用预处理命令把该头文件包含到文件中,形式为:   #include <absacc.h>   (2)、绝对访问存储器宏的应用   1)按字节访问存储器宏的形式   例如:   DBYTE[0x30]=48; //给片内RAM送数据   XBYTE[0x0002]=0x36; //给片外RAM送数据   2)按整型数访问存储器宏的形式   DWORD[0x40]=0x1234; //给0x40、0x41送数   XWORD[0x0004]=0x5678;//给4、5单送数   通过指针定义的宏访问存储器这种方法,特别适用于访问I/O口。   【例】使用关键字_at_实现绝对地址的访问,程序如下:   data unsigned char y1 _at_ 0x50; /*在data 区定义字节变量y1,它的地址为50H*/   xdata unsigned int y2 _at_ 0x4000; /*在xdata区定义字变量y2,地址为4000H*/   void main(void)   { y1=0xff;   y1=0x1234;   ……   while(1);   }   【例】将片外RAM 2000H开始的连续20个字节单清0。   xdata unsigned char buffer[20] _at_ 0x2000;   void main(void)   { unsigned char i;   for(i=0; i<20; i++)   { buffer[i]=0;   }   }   如果把片内RAM 40H单开始的8个单内容清0,则程序如下:   data unsigned char buffer[8] _at_ 0x40;   void main(void)   { unsigned char j ;   for(j=0; j<8; j++)   {buffer[j]=0;}   }C语言的基本运算   算术运算符
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   关系运算符
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   逻辑运算符
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   位运算符
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   C51的分支与循环结构(for循环以及if语句等)   C51的数组   一维数组的定义: 数据类型 数组名[常量表达式];
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   int a[5]={1,2,3,4,5};   等价于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5;   数组必须先定义,后使用   只能逐个引用数组素,不能一次引用整个数组   引用形式: 数组名 [下标]   其中:下标从0开始到n-1,不能越界,下标可以 是变量、常量或整型表达式。
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全C51的指针   指针是一个特殊的变量,它里面存储的数值是存储器的一个地址。   指针变量的定义: 数据类型说明符 [存储器类型] *指针变量名;数据类型说明符说明了该指针变量所指向的变量的类型。   指针:一个变量的地址   指针变量:专门存放变量地址的变量
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   总结:C51的数据类型与变量的定义,都必须考虑单片机的存储结构。   作业:在Keil环境中实现如下编程   1、将片内40H为首地址的连续10个单清零   2、将片外2000H为首地址的连续10个单的内   容,读入到片内40H到49H单中。   3、编写延时10ms的子函数。   课后题答案解析:   填空   1.与汇编语言相比, C51语言具有可读性好,可移植性好,模块化开发与资源共享,生成的代码效率高等优点。   2.C51语言头文件包括的内容有8051单片机片内的外设硬件资源,以及,相应的特殊功能寄存器的说明。   3.C51提供了两种不同的数据存储类型xdata和pdata__来访问片外数据存储区。   4.C51提供了code存储类型来访问_程序存储区___。   5.对于SMALL存储模式,所有变量都默认位于8051单片机_内部的数据存储器___。   C51用“*”和“&”运算符来提取指针变量的内容____和变量的__地址__。   判断对错   1.C51语言处理单片机的中断是由专门的中断函数来处理的。(√)   2.在C51语言中,函数是一个完成一定相关功能的执行代码段,它与另外两个名词“子程序”和“过程”用来描述同样的事情。(√)   3.在C51语言编程中,编写中断服务函数时需要考虑如何进行现场保护、阻断其他中断、返回时自动恢复现场等处理的程序段的编写。(×)   4.全局变量是在某一函数中存在的变量,它只在该函数内部有效。(错)   5.全局变量可使用static关键词进行定义,由于全局变量一直存在,占用了大量的内存单,且加大了程序的耦合性,不利于程序的移植或复用。(√)   绝对地址包含头文件absacc.h定义了几个宏,用来确定各类存储空间的绝对地址。(√)   简答题   1.C51在标准C的基础上,扩展了哪几种数据类型?   答:扩展了4种数据类型,它们是:bit、sfr、sfr16和sbit。   C51有哪几种数据存储类型?其中数据类型“idata,code,xdata,pdata”各对应AT89S51单片机的哪些存储空间   答:C51有6种数据存储类型data、bdata、idata、xdata、pdata和code。   数据存储类型idata对应片内RAM的256字节。   数据存储类型code对应程序存储区。   数据存储类型xdata对应片外64KB的RAM空间。   数据存储类型pdata对应片外RAM的256字节。   3 . bit与 sbit定义的位变量有什么区别?   答:bit是用来定义普通的位变量,它的值只能是二进制的0或1。而sbit定义的是特殊功能寄存器的可寻址位,它的值是可以进行位寻址的特殊功能寄存器的某位的绝对地址,例如PSW寄存器OV位的绝对地址0xd2。
单片机c语言基础知识_单片机编程代码大全
单片机c语言基础知识_单片机编程代码大全   xdate unsigned char buffer1[10] _at_ 0x2000;   date unsigned char buffer2[10] _at_ 0x40;   Void main(void)   {   Unsigned char i;   For(i=0;i<10;i++)   (buffer2[i]=buffer1[i];   )   }   部分图片来源于网络   参考书《单片机原理及接口技术–张毅刚》   禁止转载

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/48523.html

(0)
上一篇 2024年 9月 4日 上午9:02
下一篇 2024年 9月 4日

相关推荐

关注微信