PIC汇编语言程序设计基础
PIC单片机C语言编程入门
PICC 入门笔录PIC 单片机 C 语言编程入门笔录一、 C语言基础复习 --------没 C语言基础看起来可能有点困难。
C程序的语句语句名称一般形式说明表达式语句表达式;表达式语句由表达式加上分号“;”组成函数调用语函数名 ( 实质参数表 ) ;实质参数、形式参数二个看法要理解句控制语句附件 1控制语句用于控制程序的流程复合语句多个语句用括号 {} 括起空语句;只有分号“;”组成的语句称为空语句赋值语句变量 =( 变量 =表达式 );赋值表达式再加上分号组成的表达式语句数据输出语printf( “格式控制字符句串” )附件 1(1)条件判断语句if 语句, switch 语句(2)循环执行语句do while 语句, while 语句, for 语句(3)转向语句break 语句, goto语句, continue语句, return语句小于小于或等于关系运算符大于大于或等于等于不等于<<=>>===!=关系运算符都是双目运算符,其结合性均为左结合。
在六个关系运算符中,<,<=,>,>= 的优先级相同,高于 ==和 != ,==和!= 的优先级相同。
关系表达式的值是“真”和“假” ,用“ 1”和“ 0”表示。
与运算逻辑运算符或运算非运算&&||!&&和或运算符|| 均为双目运算符。
拥有左结合性。
非运算符”! ”为单目运算符,拥有右结合性 , 逻辑运算的值也为“真”和“假”两种,用“ 1”和“0 ”来表示。
单目运算符 >算术运算符 >关系运算符 >逻辑运算符 >赋值运算符第三章 :控制语句1.if语句C语言的 if语句有三种基本形式。
1、若是表达式的值为真,则执行此后的语句,否则不执行该语句。
if(表达式)语句;2、若是表达式的值为真,则执行语句1,否则执行语句 2 。
If( 表达式 )语句 1;else语句 2;3、依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。
PIC单片机汇编语言基础
P I C单片机汇编语言基础(总18页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--PIC单片机汇编语言基础1、程序的基本格式先介绍二条伪指令:EQU ——标号赋值伪指令ORG ——地址定义伪指令PIC16C5X在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:PIC16C54/55:1FFHPIC16C56:3FFHPIC16C57/58:7FFH一般来说,PIC的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。
但这里我们推荐一种清晰明了的格式供参考。
TITLE This is …… ;程序标题;--------------------------------------;名称定义和变量定义;--------------------------------------F0 EQU 0RTCC EQU 1PC EQU 2STATUS EQU 3FSR EQU 4RA EQU 5RB EQU 6RC EQU 7┋PIC16C54 EQU 1FFH ;芯片复位地址PIC16C56 EQU 3FFHPIC16C57 EQU 7FFH;-----------------------------------------ORG PIC16C54 GOTO MAIN ;在复位地址处转入主程序ORG 0 ;在0000H开始存放程序;-----------------------------------------;子程序区;-----------------------------------------DELAY MOVLW 255┋RETLW 0;------------------------------------------;主程序区;------------------------------------------MAINMOVLW B‘00000000’TRIS RB ;RB已由伪指令定义为6,即B口┋LOOPBSF RB,7 CALL DELAYBCF RB,7 CALL DELAY┋GOTO LOOP;-------------------------------------------END ;程序结束注:MAIN标号一定要处在0页面内。
PIC单片机汇编语言学习(一)
PIC单⽚机汇编语⾔学习(⼀)1、汇编语⾔的语句格式:标号操作码(指令助记符)操作数 ;注释(label) (opcode) (operand) (comment)2、常⽤伪指令a.EQU——符号名赋值伪指令格式:符号名 EQU nn——程序起始地址定义伪指令格式:ORG nnnnc.END——程序结束伪指令格式:ENDd.LIST——列表选项伪指令格式:LIST [可选项,可选项,......]e.INCLUDE:调⼊外部程序⽂件伪指令格式:INCLUDE "⽂件名"2、分⽀程序结构——对于程序中的指令运⽤作⼏点说明:(1)凡是需要2个数参与的逻辑运算(与、或、异或)和算术运算(加、减),都需要事先将其中⼀个操作数放⼊W中。
对于在此使⽤的减法指令更要格外关注,应预先把减数放⼈W中,或者说,预先放⼊W中的数,在运算中是当做减数,⽽寄存器中的数当做了被减数。
(2)⼀条条件跳转指令往往需要跟随⼀条⽆条件跳转指令,才能实现长距离的转移和程序的分⽀。
(3)PIC单⽚机的指令系统中没有设置专⽤的停机指令,可以⽤⼀条跳转到⾃⾝的⽆条件跳转指令GOTO来实现。
3、PIC单⽚机指令由3种基本类型指令组成:a.字节操作类指令b.位操作类指令c.⽴即数和控制操作类指令对于字节操作指令,f——>⽂件寄存器标识符,d——>⽬标寄存器标识符说明:⽬标标识符指定了操作结果的存放位置:d=0 操作结果存⼊W寄存器d=1 操作结果存⼊指定的⽂件寄存器,d默认值为14、指令集5、例⼦1 ;--------------------------------------------------------23 ;顺序程序结构4 ;将20H单元低4位取出存⼊21H,⾼四位取出存⼊22H5 ;要点:ANDLW和SWAPF67 ;---------------------------------------------------------8 MOVF 20H,0 ;将20H单元的内容送⼈W9 ANDLW 0FH ;W⾼四位清零低4位保持不变10 MOVWF 21H ;将拆分后的低4位送21H11 SWAPF 20H,0 ;将20H单元内容⾼、低半字节换位后送W1213 ANDLW 0FH ;再将W⾼四位清0低四位保持不变14 MOVWF 22H ;将拆分后的⾼四位送22H单元151617 ;--------------------------------------------------------1819 ;分⽀程序结构20 ;RAM中20H和21H单元存放2个数,找出⼤着存⼊22H单元21 ;要点:两数做减法,判断标志位C的值2223 ;---------------------------------------------------------24 STATUS EQU 03H ;定义STATUS寄存器地址为03H25 C EQU 0 ;定义进位/借位标志C在STATUS中得地址为026 MOVF 20H 0 ;将20H单元的内容送⼈W27 SUBWF 21H 0 ;⽤21H单元的内容减去W中的内容,结果存在W中28 BTFSS STATUS,C;若C=1,没借位,则21H单元中的数⼤,跳到F21BIG29 GOTO F20BIG ;若C=0,有借位,20H单元中得数较⼤,则跳⾄F20BIG 3031 F21BIG MOVF 21H,0 ;将21H中的内容存⼊W寄存器32 MOVWF 22H ;再将它转存到22H单元33 GOTO STOP ;跳过下⾯两条指令到程序末尾3435 F20BIG MOVF 20H,0 ;将20H中的内容存⼊W寄存器36 MOVWF 22H ;再将它转存到22H单元3738 STOP GOTO STOP ;任务完成,停机,原地踏步394041 ;--------------------------------------------------------4243 ;循环程序结构44 ;数据存储器中,从地址30H开始的50个单元全部写⼊00H45 ;要点:间接寻址寄存器FSR当做地址指针4647 ;---------------------------------------------------------48 COUNT EQU 20H ;指定20H单元作为循坏次数计数器(即循环变量)49 FSR EQU 04H ;定义FSR寄存器地址为04H50 INDF EQU 00H ;设定INDF寄存器地址为00H51 MOVLW D50 ;把计数器初值50送⼊W52 MOVWF COUNT ;再把50转⼊计数器(作为循环变量的操作值)53 MOVLW 30H ;把30H(起始地址)送⼊W54 MOVWF FSR ;再把30H转⼊寄存器FSR(⽤作地址指针)5556 NEXT CLRF INDF ;把以FSR内容为地址所指定的单元清057 INCF FSR,1 ;地址指针内容加1,指向下⼀单元58 DECFSZ COUNT,1 ;计数值减1,结果为0就跳过到下⼀条指令到STOP处59 GOTO NEXT ;跳转回去并执⾏下⼀次循环60 STOP GOTO STOP ;循环结束之后执⾏该语句,实现停机6162 ;--------------------------------------------------------6364 ;⼦程序结构65 ;3个数最⼤者放⼊40H单元6667 ;---------------------------------------------------------68 STATUS EQU 03H69 C EQU 00H70 X EQU 20H71 Y EQU 21H72 Z EQU 22H73 ;--------------------------------------------------------7475 ;主程序7677 ;---------------------------------------------------------7879 MAIN MOVF 30H,080 MOVWF X81 MOVF 21H,082 MOVWF Y83 CALL SUB84 MOVF Z,085 MOVWF X86 MOVF 32H,087 MOVWF Y88 CALL SUB89 MOVF Z,090 MOVWF 40H91 STOP GOTO STOP92 ;--------------------------------------------------------9394 ;⼦程序:(⼊⼝参数:X和Y,出⼝参数:Z)9596 ;---------------------------------------------------------97 SUB MOVF X,0 ;将X内容送⼈W98 SUBWF Y,0 ;Y内容减去W内容,结果存⼊W99 BTFSS STATUS,C;若C=1,没有发⽣借位,执⾏下⼀条,否则跳转100 GOTO X_BIG101102 Y_BIG MOVF Y,0 ;将Y中的数据送⼊W103 MOVWF Z ;再将它转存到Z104 GOTO THEEND ;跳过下⾯两条到末尾105106 X_BIG MOVF X,0 ;将X中的数据送⼊W107 MOVWF Z ;再将它转存到Z108 THEEND RETURN ;⼦程序返回。
PIC单片机的C语言编程指南
PIC单片机的C语言编程指南PIC单片机是一种常用的嵌入式系统开发平台,其具有低功耗、成本低廉、易于编程等优点,在工业自动化、电子设备控制等领域有着广泛应用。
本文将为读者提供一份PIC单片机的C语言编程指南,帮助初学者快速入门并掌握基本的编程技巧。
首先,我们需要了解一些PIC单片机的基本概念。
PIC单片机采用哈佛结构,具有多种型号和系列,每个系列有多个型号可供选择。
不同的型号和系列有不同的特性和功能,因此在编程时需要根据具体的芯片型号进行适配。
PIC单片机的编程语言常用的是C语言,其语法简洁,易于理解和学习,并且具有较高的可移植性。
在编写PIC单片机的C语言程序时,我们需要按照以下步骤进行:1. 引入头文件:使用#include指令引入所需的头文件,头文件包含了定义和声明所需的函数和变量。
3.初始化:在程序开始时对所需的资源进行初始化,包括引脚配置、中断设置、定时器初始化等。
4.主循环:编写主循环代码,其中包括需要重复执行的功能,例如读取传感器数据、处理输入输出等。
5.中断处理:根据需要,编写中断处理函数,处理外部中断、定时器中断等。
6.清理工作:在程序结束时,进行一些清理工作,例如释放资源、关闭设备等。
下面是一个PIC单片机的C语言编程示例:```c#include <xc.h> // 引入XC8编译器的头文件#define LED_PIN RC0 // 定义LED连接的引脚void iniTRISC0=0;//配置RC0引脚为输出模式void maiinit(; // 初始化while(1)LED_PIN=1;//点亮LED__delay_ms(500); // 延时500毫秒LED_PIN=0;//关闭LED__delay_ms(500); // 延时500毫秒}```上述代码实现了一个简单的功能,即使LED灯以500毫秒的间隔交替点亮和关闭。
在程序中,我们首先引入了`<xc.h>`头文件,然后定义了一个宏`LED_PIN`来表示连接LED的RC0引脚。
PIC汇编语言程序设计基础
PIC汇编语言程序设计基础汇编语言是一种底层的计算机语言,可以直接操作计算机的硬件。
PIC汇编语言是一种常用于单片机(microcontroller)的汇编语言,主要用于编写控制程序。
本文将介绍PIC汇编语言的基本概念和学习方法。
首先,了解一些关于单片机的基本知识是很有帮助的。
单片机是一种集成电路,它包含了处理器、内存和输入输出接口等功能。
常用的单片机系列有PIC、AVR和8051等。
其中,PIC是由美国Microchip公司开发的一系列单片机。
学习PIC汇编语言的基础知识包括以下几个方面:1.计算机系统的基本概念:了解计算机系统的组成,包括处理器、内存和输入输出设备等。
了解汇编语言是如何运行在计算机系统上的。
2.汇编语言的基本知识:了解汇编语言的语法和指令集。
汇编语言是一种低级语言,使用符号代表具体的机器指令。
掌握汇编语言的基本语法,如变量声明、标号、指令和操作数等。
3.PIC汇编语言的特点:了解PIC单片机的特点和架构。
掌握PIC汇编语言的指令集和寄存器的使用方法。
了解数据存储器、程序存储器和特殊功能寄存器等的地址和用途。
4.单片机的编程方法:学习如何编写控制程序,包括输入输出控制、中断处理和定时器等。
了解控制程序的基本结构,如初始化、主循环和中断处理程序等。
在学习PIC汇编语言时,可以通过以下几种途径进行:1. 理论学习:可以通过阅读相关的教材和参考书籍了解PIC汇编语言的基本概念和语法。
可以参考Microchip官方提供的PIC汇编语言手册。
2. 实验实践:可以通过实验和实践的方式学习。
可以利用单片机开发板进行实验,通过编写控制程序来实现一些简单的功能。
可以使用Microchip官方提供的开发环境和仿真器。
3.网上资源:可以利用互联网上的资源进行学习。
有很多相关的教程和视频可以参考。
可以加入一些技术论坛和交流群组,与其他学习者进行交流和探讨。
在学习和实践过程中1.理解问题:首先要明确需要解决的问题,确定需要设计和实现的功能。
PIC单片机C语言教程
PIC单片机C语言教程PIC单片机(Peripheral Interface Controller)是德州仪器(Texas Instruments)公司生产的一款微控制器芯片。
它具有高性能、低功耗、易编程等特点,因此被广泛应用于各种电子设备中。
PIC单片机的编程语言主要是C语言。
C语言是一种广泛使用的高级程序设计语言,它结构简洁、表达能力强、可移植性好。
通过使用C语言,我们可以轻松地编写控制PIC单片机的程序,并且可以充分发挥PIC单片机的特性和功能。
在PIC单片机的C语言教程中,首先需要了解C语言的基础知识,包括变量、数据类型、运算符、控制语句等。
接下来,我们需要学习如何使用C语言编写PIC单片机的程序。
1.引脚配置:在PIC单片机的程序中,我们需要配置引脚的状态,包括输入输出模式、电平状态等。
通过使用C语言,我们可以方便地配置引脚,实现与外部器件的连接和通信。
2.中断编程:中断是PIC单片机的重要特性之一,可以使控制器在特定条件下停止当前任务执行,转而执行中断服务程序。
通过使用C语言,我们可以编写中断服务程序,实现特定条件下的任务切换和响应。
3.定时器编程:定时器是PIC单片机的另一个重要功能,可以实现一定时间间隔内的定时操作。
通过使用C语言,我们可以编程设置定时器的参数,以实现特定的定时操作。
4.串口通信:PIC单片机具有串口通信功能,可以与其他设备进行数据交换。
通过使用C语言,我们可以编写串口通信的程序,实现与其他设备的数据传输和交互。
5.外设控制:PIC单片机可以连接各种外设,如LCD显示屏、键盘、驱动器等。
通过使用C语言,我们可以编写控制程序,实现与外设的连接和控制。
以上只是PIC单片机C语言教程的一部分内容。
除了上述内容,我们还可以学习其他更高级的主题,如编码技巧、优化技术等。
通过系统学习和实践,我们可以掌握PIC单片机的C语言编程技巧,实现各种功能和应用。
总的来说,PIC单片机的C语言教程是一个庞大而丰富的话题,需要通过实践和深入学习来掌握。
PIC单片机之汇编语言
PIC指令介绍2006-12-24 03:03:05来源:嵌入式技术网关键字: PIC指令系统<a target='_blank' href='/www/delivery/ck.php?n=826cd67'><img border='0' alt='' src='/www/delivery/avw.php?zoneid=212&n=826cd67' /></a>工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。
PIC的指令系统PIC 8位单片机共有三个级别,有相对应的指令集。
基本级PIC 系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。
其指令向下兼容。
一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。
1 标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。
在程序汇编时,已赋以指令存储器地址的具体数值。
汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。
标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。
在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。
指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。
书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。
PIC单片机汇编语言基础
1)设置I/O口的输入/输出方向
PIC16C5X勺I/O口皆为双向可编程,即每一根I/O端线都可分 别单独地由程序设置为输入或输出。这个过程由写I/O控制寄存器TRIS f来实现,写入值为“1”,则为输入;写入值为“0”,则为 输出。
MOVLW 0FH ; 0000 1111 (0FH
TITLE This is ……;程序标题
•
;名称定义和变量定义
;
F0EQU0
RTCCEQU1
PCEQU2
STATUSEQU3
RBEQU 6
RБайду номын сангаасEQU 7
1:
PIC16C54 EQU 1FFH;芯片复位地址
PIC16C56 EQU 3FFH
PIC16C57 EQU 7FFH
;
ORG PIC16C54 GOTO MAIN;在复位地址处转入主程序
ORG 0;在0000H开始存放程序
;
;子程序区
;
DELAY MOVLW 255
1:
RETLW 0
;
;主程序区
;
MAIN
MOVLW B00000000'
LOOP
BSF RB 7 CALL DELAY
BCF RB 7 CALL DELAY
1:
GOTO LOOP
;
END;程序结束
注:MAIN标号一定要处在0页面内。
PIC
1、程序的基本格式
先介绍二条伪指令:
EQU——标号赋值伪指令
OR-一地址定义伪指令
PIC16C5X在RESET后指令计算器PC被置为全“1”,所以
PIC16C5XJI种型号芯片的复位地址为:
第6章-PIC单片机的汇编语言设计
第6章PIC单片机的汇编语言设计张益昕Email: zyixin@南京大学工程管理学院2015/9/2812015/9/2826.1 创建结构化的程序6.2 分支程序6.3 产生延时和时间间隔6.4 子程序6.5 常用数学运算6.6 随机数生成内容提要36.1 6.1 创建结构化的程序创建结构化的程序设计程序并不是一个简单的工作,需要在开始编写代码前就考虑和规划程序结构。
在使用汇编语言时尤其需要重视程序的结构化。
可以采用程序框图来表示程序,从而指导编程过程。
46.1 6.1 创建结构化的程序创建结构化的程序流程图流程图((flow diagram )程序流程图是一种非常好用的程序框图,是程序员对解决问题的方法、思路或算法的一种描述。
流程图的优点:采用简单规范的符号,容易实现。
结构清晰,逻辑性强。
便于描述,容易理解。
56.1 6.1 创建结构化的程序创建结构化的程序流程图包含许多种符号,用来表示程序的各个部分。
起始框终止框执行框判别框66.1 6.1 创建结构化的程序创建结构化的程序以电冰箱程序的流程图为例:电冰箱内部主要包括温度传感器和压缩机两个部件。
上电时控制器应运行初始化程序。
对温度的调节通过启动和关闭压缩机实现。
程序循环读取实际的温度,并将其和用户设定温度对比,判断哪一个温度更高。
如果实际温度更高,则启动压缩机指令,反之则关闭压缩机。
如果实际温度偏离设定值过大,则发出警告。
如果用户关机,则进行关机准备,切断电源。
76.1 6.1 创建结构化的程序创建结构化的程序每一个表示判断的菱形框都包含一个问题,每个问题都有“是”和“否”两种回答。
对于两种回答,菱形框有两个程序出口。
流程图可繁可简,通常详细到让程序员能够将其转化为汇编程序即可。
对于较复杂的程序,可以只画出流程图的整个框架,而用子流程图来分别表示内部的功能。
86.1 6.1 创建结构化的程序创建结构化的程序状态图状态图((state diagram )在流程图中,程序通过一系列动作或事件来表示,这一系列动作或事件的发生就代表了程序的执行过程。
PIC单片机指令系统和汇编语言程序设计
第二章PIC单片机指令系统和汇编语言程序设计2.1 指令系统概述2.1.1 指令的表示方法1.机器指令的表示方法:指令用于规定计算机的基本操作。
一台计算机所能执行的指令集合就是它的指令系统。
指令共有两种表示方法,分别是机器语言表示方法和汇编语言表示方法。
不同种类的单片机有不同的一套命令(即所谓“指令系统”)。
2.汇编语言的表示方法:汇编语言是对机器语言的改进,它采用便于人们记忆的一些符号(例如简化的英文单词)来表示操作码、操作数和地址码等。
通常把表示指令的符号称之为助记符。
3.PIC16F87X单片机指令:PIC16F87X单片机采用精简指令集(RISC)结构,指令效率高,功能强。
它的指令为单字的宽字位(14)指令,由此生成的程序代码短。
指令条数少,仅有35条。
(1)面向字节操作类(2)面向位操作类(3)常数操作和控制类操作。
2.1.2PIC单片机指令的寻址方式1.寄存器间接寻址:所谓寄存器间接寻址指的是通过寄存器F0、F4来实现。
实际的寄存器地址放在F4的低5位中,通过F0来进行间接寻址。
INDF不是物理上实际存在的寄存器,而任何寻址INDF的指令都是以FSR寄存器内容为地址的RAM单元中存放着参加运算或操作的数据。
2.立即数寻址:所谓立即寻址就是操作数在指令中直接给出。
通常把出现在指令中的操作数称之为立即数,因此就把这种寻址方式称之为立即寻址。
3.直接寻址:指令中操作数以其所在存储单元地址的形式给出,就称之为直接寻址。
这种方式是对任何一寄存器直接寻址访问。
4.位寻址:这种寻址方式是对寄存器中的任一位(bit)进行操作。
2.1.3指令符号的意义说明1.PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释2.指令符号的意义说明:在PIC系列单片机指令中常把数据存储器RAM当作寄存器来使用(处理)并用字母f(或F)表示。
PIC04汇编语言程序设计
MAIN CLRW CALL SUB …… GOTO MAIN ;--------------------------------------------------------------------------;子程序和中断服务程序区 ;--------------------------------------------------------------------------SUB MOVLW 01H ;子程序 ;子程序 …… RETURN ;子程序返回 ;子程序返回 INT_BODY ;中断服务程序 ;中断服务程序 MOVLW 0FFH RETFIE ;中断服务程序返回 ;中断服务程序返回 ;---------------------------------------------------------------------------END ;全部程序结束 ;全部程序结束
⒊操作数 指操作对象, 可以是立即数或地址。 指操作对象 , 可以是立即数或地址 。 当用 数值表示操作数时, 数值可以是二进制、 数值表示操作数时 , 数值可以是二进制 、 八进 十进制、十六进制数值,见下表。 制、十进制、十六进制数值,见下表。
注意:编译器 MPASM默认的进制不是十进制 , 默认的进制不是十进制, 注意 : 编译器MPASM 默认的进制不是十进制 而是十六进制。 而是十六进制。 操作数可以是事先定义过的符号及表达式。 操作数可以是事先定义过的符号及表达式。 在源 表示一个以 A ~ F 打 头的十六进制数时, 头的十六进制数时,则必须在它的前面增添一 如十六进制数FF应表示为 FFH。 应表示为0 个“0”。如十六进制数FF应表示为0FFH。 用字符代表的常数就是该字符的ASCII码 用字符代表的常数就是该字符的ASCII码。 ⒋注 释 注释可有可无, 注释可有可无,但是最好养成附带注释的 习惯。 习惯。
PIC单片机C语言编程入门
PICC入门笔记PIC单片机C语言编程入门笔记一、C语言基础复习--------没C语言基础看起来可能有点困难。
(1) 条件判断语句if语句,switch语句(2) 循环执行语句do while语句,while语句,for语句(3) 转向语句break语句,goto语句,continue语句,return语句第三章: 控制语句1.if语句C语言的if语句有三种基本形式。
1、如果表达式的值为真,则执行其后的语句,否则不执行该语句。
if(表达式) 语句;2、如果表达式的值为真,则执行语句1,否则执行语句2 。
If(表达式)语句1;else语句2;3、依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。
然后跳到整个if语句之外继续执行程序。
如果所有的表达式均为假,则执行语句n 。
然后继续执行后续程序。
If(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;…else if(表达式m)语句m;else语句n;2、条件运算符和条件表达式由条件运算符组成条件表达式的一般形式为:表达式1? 表达式2:表达式3其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。
例:max=(a>b)?a:b;意义:如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现。
不但使程序简洁,也提高了运行效率。
3、switch语句C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式){case常量表达式1: 语句1;case常量表达式2: 语句2;…case常量表达式n: 语句n;default : 语句n+1;}其语义是:计算表达式的值。
并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
pic单片机c语言
PIC单片机 C 语言一、简介PIC(Peripheral Interface Controller)单片机是一种微控制器系列,由美国微芯科技公司推出。
PIC单片机广泛应用于嵌入式系统、自动化控制、仪器仪表等领域。
本文将介绍PIC单片机C语言编程的基础知识。
二、PIC单片机的开发环境准备在开始PIC单片机C语言编程前,我们需要准备开发环境。
以下是常用的开发环境工具:•MPLAB X IDE:Microchip官方推出的集成开发环境(IDE)。
可从Microchip官网免费下载。
•XC8编译器:Microchip官方提供的C语言编译器。
与MPLAB X IDE 配合使用,可编译生成PIC单片机的机器语言。
•PICKIT系列编程器:用于将编译生成的机器语言烧录到PIC单片机中。
在安装好开发环境工具后,我们可以开始进行PIC单片机C语言编程了。
三、PIC单片机的基本语法PIC单片机C语言编程的语法与标准C语言相似,但也有一些特殊的语法规则需要注意。
以下是一些常用的语法要点:1. 声明和定义变量在PIC单片机C语言中,我们可以使用关键字int、char、float等来声明和定义变量。
例如:int a; // 声明一个整型变量achar b; // 声明一个字符型变量bfloat c; // 声明一个浮点型变量c2. 控制语句PIC单片机C语言中的控制语句与标准C语言相似,包括条件语句、循环语句等。
例如:if (condition) {// 条件为真时执行的代码} else {// 条件为假时执行的代码}while (condition) {// 循环体}for (initialization; condition; update) {// 循环体}3. 函数在PIC单片机C语言中,我们可以定义和调用函数。
例如:int add(int a, int b) {return a + b;}int result = add(3, 5); // 调用函数add,并将返回值赋给result变量四、PIC单片机C语言编程实例下面我们以一个简单的实例来演示PIC单片机C语言编程的过程。
PIC汇编语言程序设计基础
汇编语言的语句格式
–操作码
• 这个字段不能是空的,操作码就是指令助记符, 它是指令功能名称的英文缩写,表示指令的操作 类型和操作性质,是汇编语言语句中的关键词, 因此不可缺省。 • 指令操作码的助记符在汇编过程中,汇编器把它 与一个事先建立的操作码索引表进行逐一比较, 找出相应的机器码,并且取而代之,所以这一汇 编过程又叫做代真。 • 在其前面没有标号时,操作码前面至少保留一个 空格,即不能顶格书写,以便与标号区别,否则, 会被汇编器误认为是标号。
– 这些字段不都是必需的,但其顺序是不能颠倒的; – 标号必须从最左边第一列开始书写,其后至少用一个空格与 操作码隔离; – 在没有标号的语句中,指令操作码前面必须保留一个或一个 以上的空格;
第四章 PIC汇编语言程序设计基础
汇编语言的语句格式
标号 操作码(指令助记符) 操作数 ;注释 (label) (opcode) (operand) (comment) – 操作码与操作数之间也必须保留一个或一个以上的空格; – 操作码后面如果跟随2个操作数的话,操作数之间必须用逗号 (半角)隔开; – 在必要时可以加注释,注释可以跟在操作码、操作数或标号 之后,并用分号引导,甚至可以单独占用一行且可以从任何 一列开始。 – 汇编语言源程序既可以用大写字母书写,也可以用小写字母 书写,还可以大写小写混用,以便于阅读。一个语句行最多 允许有225个(半角)字符。
第四章 PIC汇编语言程序设计基础
RAM数据存储器的体选寻址问题
–PIC单片机面向字节操作和面向位操作的指令,其 指令码中均包含一个7位长的数据存储器单元地址F。 F最多可以区分128个存储器单元。 –PIC16F87X内部的RAM配置了512个单元的地址空间, 地址编码长度需要9位,从000H到1FFH(即 000000000B~1111lllllB)。如果想用7位地址码 (从00H到 7FH即 0000000B~1111111B)实现对 512个单元的寻址,就必须对长度为512的RAM均匀 划分为4等份,每一等份称作一个体,按地址从小 到大的顺序分别记为体0、体1、体2和体3。
第4章 PIC软件开发设计基础
PIC单片机主题模拟器(PIC MASTER Emulator) MPLAB还具有对硬件的模拟工具,也能对ROM写入器进行控制。 MPLAB的最新版 MPLAB Ver7.00已出。但与2003年的MPLAB Ver6.30大同 小异,只是加强了Editor,Simulation功能。使用方式方法基本相同。 另外与以前的MPLAB Version 5.70,6.10,6.20版本相比,虽没有本质上的 差别,主要的改进在于软件使用的便利性的改良和PIC新品种 (PIC18系列) 及 对最新PC Windows操作系统 (Windows XP等) 的支持。其功能比较等请见表 4.1。其主要改进如下: 针对32 Bits 的Windows系统的MPLAB开发环境。能对应Windows 98以后的 所有Windows系统。(Windows2000,Windows XP等) 能开发PIC的新芯片。(PIC18 系列) 能控制ICD和Progarmmer编程器等,且支持USB连接。 为大规模开发,MPLAB能并行处理多个开发芯片。这样在MPLAB中引 入了 Workspace 新概念,软体且能对多个开发Projects进行统一的管理。 增强程序的Editor编辑功能。 增强了程序Debug调试功能。
表4.1 MPLAB软件各版本功能比较
MPLAB 5.70 × △ ○ ○ ○ ○ ○ × 已 MPLAB 6.10 ○ ○ × ○ × × × ○ ’02/11 MPLAB 6.20 ○ ○ ○ ○ ○ × ○ ○ '03/4 MPLAB 6.30 ○ ○ ○ ○ ○ × ○ ○ '03/7
对应PIC种类 dsPIC PIC18 PIC17 PIC16midrange PIC16baseline PIC14 PIC12 rfPIC能力,要进行PIC应用系 统的设计开发,其离不开硬件开发和软件开发两种工具。 在进行软件开发时,首先利用相关的编辑软件,按照相应 的格式创建PIC单片机的源程序,然后对源程序进行汇编。 在完成汇编之后,用户可以利用模拟调试软件或者硬件在 线仿真器对其目标程序(机器代码)进行运行调试,发现其 错误并修改之。经过调试、修改、再汇编之后,即可将修 改后的目标程序用硬件编程器将目标代码烧写到用户的 PIC芯片中,最终将固化的芯片插入到用户板(实验板)脱 机运行。本章主要讲述PIC软件开发工具MPLAB的使用方 法等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3. 4.
(三)操作数
• 操作数是指令操作的对象,是数据或数据的地址。它们 可以使用数值或标号形式表示。 • 其中,数值可以使用二进制、八进制、十进制和十六进 制或ASCII字符值(参见讲义88页表4.2);而标号可以 是在此前定义或赋值的代表数字或地址标号或字符串。 • 如果操作数有两个,中间应由逗号隔开。
(二)ORG --- 程序起始地址定义伪指令
• 格式:
ORG nnnn
• 说明:用于指定该伪指令后面的源程序在ROM中存放 的起始地址。 • nnnn 为13位长的地址参数。
• 举例: ORG 0005H MAIN CLRW CALL SUB
:
MAIN是标号,也就是本行指令的符号地址。ORG伪指 令又将该符号地址定义为单片机内部RAM的0005H单 元,即CLRW的机器码存储在程序存储器ROM的0005H 开始的单元中。
( label ) ( opcode ) ( operand ) (commend)
1. 2.
标号必须从左面第1列开始,后面至少用1个空格与操 作码隔离(注意:标号后面没有冒号); 在无标号时,操作码前至少要保留一个或一个以 上的空格(建议使用“Tab”键分割标号列);
3.
操作码与操作数之间至少要保留一个或一个以上的 空格,如果有两个操作数时两者之间要由逗号(半 角)隔开(建议使用“Tab”键分割) ; 注释由分号(英文半角)引导,在标号、操作码和 操作数之后。标号也可以单独占一行单必需由分号 引导。
指令的可选项共有十余种,这里仅介绍2种。
① P=〈设定单片机型号〉。 例如:P = 16F877
② R=〈定义默认的数值进制〉。例如:R=DEC(十进制) 或:R=HEX(十六进制)
(五)INCLUDE --- 调入外部程序文件伪指令
• 格式 :INCLUDE “文件名” • 说明:用来告知汇编器,将一个预先编制好的外部程序文 件包含进来。这样做可以减少重复劳动,提高编程效率。 调入的外部程序文件通常是“定义文件”,即定义单片机 的复位矢量、专用寄存器的地址及控制位和状态为地址等。
第四章 PIC汇编语言程序设计基础
• • • • • • • • • • • • • 4.0 序论 4.1 MPASM汇编器的使用 4.2 汇编语言的语句格式 4.3 常用伪指令 4.4 程序格式和程序流程图 4.5 RAM数据存储器的体选寻址问题 4.6 顺序程序结构 4.7 分支程序结构 4.8 循环程序结构 4.9 子程序结构 4.10 程序的跨页跳转和跨页调用问题 4.11 延时程序设计 4.12 查表程序设计
• 伪指令只在汇编的过程中进行一些辅助工作,是程序设计 人员向编译器发出的控制命令,告诉汇编器如何完成汇编 过程和一些规定的操作,以及控制汇编的输入、输出和数 据定位等。一旦汇编完成,伪指令就不存在了。
• 与指令类似,伪指令的格式也是由4个字符段组成。
符号名 伪指令助记符 操作数 ;注释
符号名:通常为寄存器名、变量名、常数名、标志位名或控制 位名、复位矢量或中断矢量的一个字符串。同标号一 样符号名必须从一行的第1列开始,后面与伪指令应至 少保留一个空格。但不能向标号那样独占一行。
• 汇编语言的使用为我们提供了一种可以不涉及机器指令码 和实际存储器地址的便捷条件。 但是要想正确使用汇编语言编程必须了解“编译器” 所约定的内容,掌握如:语句格式、标号格式、数据进制 的表示方法、伪指令和汇编器的使用等等。 • 在下面的章节中将介绍MPASM编译器的使用、汇编语言 的语句格式、几种常用伪指令、程序格式和流程图。
;------------------------------------------------------------;复位矢量和中断矢量的安排(PIC16F87X) 注释 ;------------------------------------------------------------ORG 0000H ;复位矢量入口 GOTO MAIN ;转跳到主程序 ORG 0004H ;中断矢量入口 GOTO INT_BODY ;跳转到中断服务程序 ;--------------------------------------------------------------;主程序区 ;--------------------------------------------------------------ORG 0005H ;主程序从0005H开始存放 MAIN CLRW CALL SUB „ „ 标号 GOTO MAIN
(一)EQU --- 符号名赋值伪指令
• 格式: 符号名 EQU nn
• 说明:使 EQU 两边的值相等。其中 nn 是长度不同的二进制数(可 以分别作为寄存器名、位地址、8位的数据或常数、13位的复位或 中断矢量等 )。一旦符号名被EQU赋值,其值就固定下来不能再 重新改变。
• 举例:
STATUS RP0 EQU EQU 03H 05H ;定义寄存器名 ;定义位地址
3. 4.
5.
一个标号在系统中只能定义一次。
(二)操作码
1. 2. 在汇编语言语言源程序中,尽管其它3个字段有时是空的, 但操作码字段无论在何时都不能是空的。 操作码是指令的助记符,是指令功能的英文缩写,表示指 令的操作类型、性质,是汇编语言语句中的“关键字”, 因此是不能省略的。 汇编器将操作码进行汇编时,将其与一个预先建立的操作 码索引表相比较找出对应的机器码取而代之,这叫“代真” 当操作码前无标号时,操作码前至少要留有一个空格以防 汇编器将其误认为标号。
TMR0_b
EQU
00H
;定义定时器的初值常数
• 【举例】:在PIC指令系统中,没有寄存器寻址的方式,汇 编程序也不允许直接使用寄存器的名字。所以与寄存器相关 的操作只能通过“直接寻址”方式完成。 【如】:将W中的数据送PORTC寄存器: MOVWF 07H 因此,编写PIC的程序清单时,在程序的开头可以使用QEU 伪指令现将相关的寄存器名进行定义,然后在程序中就可以 直接引用寄存器的名字。 PORTC EQU 07H ∶ ;定义寄存器名
返回
4.4 程序格式和程序流程图
• 虽然书写源程序时没有统一的要求,但是一个良好的格式 风格非常重要。在此推出一种风格的格式供参考:
;------------------------------------------------------;符号定义和变量定义 ;------------------------------------------------------INDF EQU 00H ;把后面程序指令要用到的 TMR0 EQU 01H ;寄存器单元地址用表义性很 PCL EQU 02H ;强的符号名预先定义 STATUS EQU 03H FSR EQU 04H PORTA EQU 05H TRISA EQU 85H X EQU 20H ;对程序所需的变量预先定义 Y EQU 21H
(四)注释
• 注释部分用于对指令进行注解和说明。虽然注释可有可无, 但对于一个编程者来说,为了便于程序的阅读、交流、修 改和调试,在一些关键的语句上加标注释是一种好的编程 习惯;
• 注释由半角的引号“;”开始,它不是程序的功能部分,编 译器对该部分不做任何处理。
返回
4.3 常用伪指令
• 所谓伪指令就是“假指令”的意思,它不是为CPU识别的 指令、没有对应的机器码。它是为编译器服务的指令,如 确定指令的存储地址,为标号、字符串赋值等。 • 伪指令的使用使程序在书写、阅读上更方便。对于一些没 有说明意义的数字、RAM地址可以通过伪指令换为有意义 的字符来取代,使程序具有很好的可读性。如:在PIC的 指令中不能直接引用寄存器的名字取代地址,只能通过 EQU伪指令定义后引用其寄存器的符号。
;---------------------------------------------------;子程序区和中断服务程序区 ;---------------------------------------------------SUB MOVLW 01H ;子程序 „ „ RETURN ;子程序返回 ; INT_BODY ;中断服务程序 MOVLW 0FFH … … RETFIE ;中断服务程序返回 ;----------------------------------------------------END ;全部程序结束
返回
4.2 汇编语言的语句格式
• 为了使编译器能够顺利的对用户编制的汇编语言源程序进 行代码转换,在编制源程序时必须依照汇编器的约定进行 书写。 • microchip公司提供的MPASM汇编器其汇编语言格式的一 般格式由4个字段组成,这4个段不都是必要的,但顺序不 能颠倒。 标 号 操作码 操作数 ;注 释
2.
3.
4.
尽管C语言已经成为各类单片机重要的开发手段,但是 汇编语言永远不会被淘汰,只有将汇编语言和C语言有 机的结合起来才能高效的实现应用软件的设计。
4.0 序论
• CPU所能识别的是由 “0”或“1”组成的二进制的 “机器语 言”。如: “SLEEP”指令的机器语言: “00000001100011” 。但机器语言不便于人们编写、阅读。 • 汇编语言是对机器语言的改进。使用了便于记忆、阅读的符 号、字符串来表示指令的操作码、操作数和操作数地址。是 一种符号语言,它与机器语言一一对应。 • 汇编语言CPU是不能识别的,因此必须使用一种工具将其 “翻译”为机器语言,这个工具叫“汇编器”或“汇编程 序”。使用“汇编器”或“汇编程序”帮助将汇编语言的源 程序转换为机器语言,这一过程称之为“汇编”。
4.
(一)标号
1.
2.
在指令前的标号实际上就是该指令的符号地址。
并不是每条指令都需加标号的,只有那些欲被其它语句引 用的语句之前才需要加标号。子程序第一条语句的标号实 际上就是该子程序的名称; 标号可以单独作为作为一行; 标号的第1个字符必须由字母或下划线 “_” 开始,并且从 每一行的第1列开始写。标号最多可由32个字母、数字和 其它符号组成。标号不能使用指令的助记符、寄存器名、 或其它系统中已有固定用途的字符串(系统的保留字)。