单片机程序查询_单片机c语言编程300例

单片机程序查询_单片机c语言编程300例单片机之汇编语言和C语言(以PIC单片机为例)目录 计算机语言计算机语言类别中断定时/计数器 C语言数据类型C语言动态数组C语言中void什么意思C语言宏定义单片机C语言的扩充数据类型单片机C语言

单片机之汇编语言和C语言(以PIC单片机为例)   目录 计算机语言计算机语言类别中断定时/计数器 C语言数据类型C语言动态数组C语言中void什么意思C语言宏定义单片机C语言的扩充数据类型单片机C语言的运算符单片机C语言的基本语句单片机汇编语言基本语句(PIC)PIC单片机基础概念PIC16F887(40引脚图)引脚汇总设计框图I/O端口寄存器OPTION寄存器IINTCON 寄存器OPTION_REG选项寄存器发送寄存器接受寄存器串口寄存器 常见函数延迟函数开关函数中断服务程序 推荐练习   计算机语言   计算机语言类别   1、机器语言:用机器指令(0和1)编写,计算机能看懂并执行,机器语言   是计算机的最爱。   2、汇编语言:即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法。   3、高级语言(如C语言):用接近人类习惯的自然语言和数学语言编写,采用软件编译成计算机能认识的机器语言。(生成HEX文件)   中断   CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。   定时/计数器   • 定时功能   所谓定时功能就是通过来自单片机内部的时钟脉冲作计数脉冲,使计数器计数,即每个机器周期计数器加1,计数值达到予置值后,定时/计数模块产生溢出。   • 计数器功能   所谓计数是指对外部事件进行计数。外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲进行计数。   C语言数据类型   
在这里插入图片描述   C语言动态数组   动态数组是指在声明时没有确定数组大小的数组,即忽略圆括号中的下标;当要用它时,可随时用ReDim语句(C语言中用malloc语句)重新指出数组的大小。使用动态数组的优点是可以根据用户需要,有效利用存储空间。   C语言中void什么意思   void是是C语言的一个关键字,其含义为空。在C语言中,单独的void有两种用途,均用于函数中。   1、用于函数返回值。   形式为   void main(…);   代表函数没有返回值。在这样的函数中,调用return语句时,不需要也不可以有参数。注意,写成main(…); 的形式,在部分编译器中可以编译成功,但并不是没有返回值,而是有一个默认的整型(int)返回值的意思。   2、用于函数参数列表。   当函数没有参数时,需要定义为xxx func_name(void); 的形式,表示本函数不需要任何参数。注意,如果写成xxx func_name(); 的形式,与void不同,不是没有参数,而是函数参数不定,可以接收任何长度的参数。   C语言宏定义   就是强制性的字符替换,比如说你要用a代表6,那么后面所有是a的地方都是用字符6替换掉就可以了,这个是不进行运算只是替换。比如define a (a+b)那么后面所有a的地方都可以全部替换成(a+b)但是你不能用a+b的结果。   宏定义又称为预定义,它有很多功能。首先他能定义常量,这样我们可以集中统一修改。其次,它还能定义函数(预定义)。总之,熟悉它会很方便。   宏定义写法:   #号是预处理指令,用#开头。   #define ON (新的名称 ) 1(原来的名称)   作用:在程序书写时可用新的名称代替原来的名称书写,以达到简化或   直观的效果。编译器在预处理的时候,自动将新的名称还原为原来的名   称。   书写位置:源程序开头,函数的外面   单片机C语言的扩充数据类型   • sfr:特殊功能寄存器声明   • sfr16:sfr的16位数据声明   • sbit:特殊功能位声明   • bit:位变量声明   例:   •sfr SCON = 0X98;   • sfr16 T2 = 0xCC;   • sbit OV = PSW^2;   单片机C语言的运算符   与C语言基本相同   单片机C语言的基本语句   与标准C语言基本相同:   • if 选择语言   其中if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表   达式。   • while 循环语言   特点:先判断条件表达式,后执行语句。   原则:若条件表达式的值为真,那么执行语句。否则跳出while 语句   • for 循环语言   执行过程:   1.求解一次表达式1.   2.求解表达式2,若其值为真(非0 即为真),则执行for中语句。然后执行第3步。否则结束for 语句,直接跳出,不再执行第3步。   3.求解表达式3.   4.跳到第2步重复执行。   • switch/case 多分支选择语言   switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。   语句表达式:   • do-while 循环语言   单片机汇编语言基本语句(PIC)   1.ADDWF f, d ,f寄存器内容与W寄存器相加,d=1时结果放在f,d=0是结果在W,影响STATUS的C,DC和Z标志。该条指令影响的状态与MCS51一致,有进位时C=1,有半进位时DC=1;否则相反。结果为0时Z标志置位。   2.ANDWF f, d ,f寄存器内容与W寄存器相与,d=1时结果回存至f,d=0时结果存至W,结果影响STATUS的Z标志位。   3.CLRF ( CLEAR File Register), 清空页寄存器,STATUS的Z标志位置位   4.CLRW (CLEAR WREG),清空W寄存器,STATUS的Z标志位置位,可以用MOVLW 0H等同使用   5.COMF f, d,f寄存器内容取反,d=1时结果存至f寄存器,d=0时结果存至W寄存器。影响Z标志位。   6.DECF f, d,f寄存器内容自减1,d=1时结果存放于f;d=0时结果存放于w,影响STATUS的Z标志位。   7.DECFSZ f, d f寄存器内容自减1,为0则跳行,d=1时结果在f寄存器;d=0时结果在W寄存器。不影响标志位。   8.INCF f, d,f寄存器内容自加1,d=1时结果回存至f,d=0时结果在W。影响Z标志位。   9.INCFSZ f, d,f寄存器内容自加1,结果为0则跳行。d=1时结果回存至f;d=0时结果存至W寄存器。该指令不影响标志位。   10.IORWF f, d,f寄存器内容与W寄存器相或,d=1时结果回存至f,d=0时结果存至W,结果影响STATUS的Z标志位。   11.MOVF f, d,当d=1时,f寄存器内容不变,d=0时f寄存器内容复制到W寄存器。当d=1时,只改变Z标志位,可以用与判断f寄存器内容是否为0。   12.MOVWF , f (MOVE WREG to File Register),很常用的一条指令,将W寄存器的内容保存到RAM中去   13.NOP,没什么可说的,空操作而已,但是确实很常用的语句,短延时必须的。   14.RLF f, d,循环左移指令,f的最高位移到C,原来C的内容移到f的最低位。与MSC51的循环左移指令功能一致。结果影响C标志。   15.RRF f, d, 循环右移指令,f的最低位移到C,原来C的内容移到f的最高位。与MCS51的循环右移指令功能一直。结果影响C标志。   16.SUBWF f, d ,f-W结果存放取决于d,当d=1时结果存在f里,0时存在W里,指令影响STATUS的C、DC、Z标志位,有借位时C=0,有半借位时DC=0;无借位和半借位时真好相反。这点与MCS51系列的单片机有些不同,用时需注意。当两数相等时Z=1。   17.SWAWF f, d, 字节交换指令,f的高低字节交换,结果不影响标志位。该条指令在中断断点保存和恢复中很重要,而且只能使用該指令。在下篇將給出介紹。   18.XORWF f, d,f寄存器内容与W寄存器异或,d=1时结果存至f,d=0时结果存至W,影响STATUS的Z标志位,该条指令我常用来比较是否与一个数相等,利用同0异1的原理。   19.BCF f, b,清零f寄存器的第b位。指令不影响任何标志位,四条位操作指令在程序设计中有极其重要的作用,被广泛应用。   20.BSF f, b,置位f寄存器的第b位。指令不影响任何标志位。   21.BTFSC f, b,测试f寄存器的第b位,为0则跳行,指令不影响任何标志位。   22.BTFSS f, b,测试f寄存器的第b位,为1则跳行,指令不影响任何标志位。   23.ADDLW k,W加立即数k,结果在W寄存器内,有进位,半进位时C,DC为1,否则0;结果为0时Z=1。   24.ANDLW k,W与立即数k相与,结果在W寄存器,影响Z标志位。   25.CALL k,调用子程序,k为子程序的入口地址,不影响任何标志位,但是改指令执行需要两个指令周期,因为在跳转之前需要保存当前得返回地址。   26.CLRWDT 看门狗定时器清0,影响STATUS寄存器的TO和PD标志位。两个标志位均置位。   27.GOTO k,跳转到指定地址处,不影响标志位。双周期指令。   28.IORLW k,W寄存器与立即数k相或,结果在W寄存器,影响Z标志位。   29.MOVLW k,立即数k赋给W寄存器,不影响标志位。   30.RETFIE,中断返回指令,没啥说的。中断服务程序最后一句。   31.RETLW k,立即数k送W寄存器,子程序返回,该条指令很特别哈,也比较有意思的饿,查表必用。   32.RETURN,子程序返回指令。   33.SLEEP,进入休眠模式。影响STATUS的TO和PD标志位,TO=1,PD=0。   34.SUBLW, k,立即数减去W,结果在W寄存器,标志位影响与SUBWF指令一致,不再赘述。   35.XORLW k,立即数k与W寄存器异或,结果在W寄存器,影响Z标志位。   PIC单片机基础概念   PIC16F887(40引脚图)   
在这里插入图片描述   引脚汇总   
在这里插入图片描述   设计框图   
在这里插入图片描述   I/O端口寄存器   
在这里插入图片描述   OPTION寄存器   
在这里插入图片描述   
在这里插入图片描述   IINTCON 寄存器   
在这里插入图片描述   
在这里插入图片描述   OPTION_REG选项寄存器   
在这里插入图片描述   
在这里插入图片描述   发送寄存器   
在这里插入图片描述   
在这里插入图片描述   
在这里插入图片描述   接受寄存器   
在这里插入图片描述   
在这里插入图片描述   
在这里插入图片描述   串口寄存器   
在这里插入图片描述   
在这里插入图片描述   常见函数   延迟函数   开关函数   中断服务程序   推荐练习   无论是汇编语言还是C语言等单片机编程,除了查看相关数据百度外,也要通过大量的练习进行掌握,我推荐可以去牛客网(可直达)看看,他们现在的题库内容很丰富,属于国内做的很好的了,里面的资源也是全部免费的,很好的一个平台,欢迎大家进入学习查看。   
在这里插入图片描述

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

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

(0)
上一篇 2024年 9月 15日 下午3:42
下一篇 2024年 9月 15日 下午3:47

相关推荐

关注微信