PIC汇编语言程序设计基础解析

合集下载

PIC编程说明

PIC编程说明

PIC编程说明在编程过程中由于一个端口可能有多个功能,所以在初始化时应该详细设置所以的端口的功能,当使用一种功能时应该将其他功能关闭,否则端口的功能将不能正常工作。

汇编:C语言:-------picc1、在用C语言编程之前,得确定用户用的是哪个辅助C编译器(因为MPLAB IDE 不提供C编译器,不过在8.33版本有捆绑了PICC的C编译器用户可以直接选用)。

注意设置连接编译器的路径。

2 在程序的最前面用#include 预处理指令引用包含头文件,其中必须包含一个编译器提供的“pic.h”文件(在picc18里为:pic18.h),实现单片机内特殊寄存器和其它特殊符号的声明;3 用“__CONFIG”预处理指令定义芯片的配置位;4 声明本模块内被调用的所有函数的类型,PICC 将对所调用的函数进行严格的类型匹配检查;5 定义全局变量或符号替换;6 实现函数(子程序),特别注意main 函数必须是一个没有返回的死循环。

现提供个C 原程序的范例:#include <pic.h> //包含单片机内部资源预定义#include “pc68.h” //包含自定义头文件//定义芯片工作时的配置位__CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS);//声明本模块中所调用的函数类型void SetSFR(void);void Clock(void);void KeyScan(void);void Measure(void);void LCD_Test(void);void LCD_Disp(unsigned char);//定义变量unsigned char second, minute, hour;bit flag1,flag2;//函数和子程序void main(void){SetSFR();PORTC = 0x00;TMR1H += TMR1H_CONST;LED1 = LED_OFF;LCD_Test();//程序工作主循环while(1) {asm(“clrwdt”); //清看门狗Clock(); //更新时钟KeyScan(); //扫描键盘Measure(); //数据测量SetSFR(); //刷新特殊功能寄存器}}为了使编译器产生最高效的机器码,PICC 把单片机中数据寄存器的bank 问题交由编程员自己管理,因此在定义用户变量时你必须自己决定这些变量具体放在哪一个bank 中。

PIC汇编语言程序设计基础

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.理解问题:首先要明确需要解决的问题,确定需要设计和实现的功能。

PIC18F452单片机原理及编程实践(第二章)PIC结构体与汇编语言编程

PIC18F452单片机原理及编程实践(第二章)PIC结构体与汇编语言编程

1.
2.
2017/8/29
12
(二)通用寄存器GPR
用于存储程序的“变量数据” ,由用户自由支 配。特点: 每一个文件寄存器都是8bit宽度的存储单元; 每一个存储单元都对应一个地址; 不同型号的PIC18其GPR的大小是不同的; 与SFR共享一个RAM空间;
1. 2. 3. 4.
2017/8/29

在PIC单片机中“文件寄存器”就是数据存储(RAM)区; 在PIC文献中将所有的RAM单元统称为“文件寄存器”;
文件寄存器是由“通用寄存器GPR‖和“特殊功能寄存器 SFR‖两个部分构成,即:文件寄存器=GPR+SFR
与程序存储器ROM不同:文件寄存器可读、写,用于存储 程序运行时的临时数据。工艺上采用“静态RAM‖结构。
2017/8/29 1
第二章:PIC体系结构与汇编语言编程

CPU在运行指令时要大量地使用寄存器来存放临时数据; 使用汇编指令编程就要了解PIC单片机的寄存器结构,理 解这些存储单元在程序数据处理时的作用。 按照使用特点,PIC单片机中数据存储单元(RAM)分为 三种类型: WREG(工作寄存器) ---- 一个8位寄存器; GPR(通用数据寄存器组)--- 若干个8位的存储空间; SFR(特殊功能寄存器组) ---若干个8位的存储空间。

2017/8/29
8
PIC文件寄存器(RAM)的空间分配

按照功能逻辑划分,文件寄存器(RAM)被分为: ① 通用寄存器 GPR:存储程序中的变量数据; ② 特殊功能寄存器 SFR:用于设定功能模块的工作 模式、工作状态等特殊信息。

GPR和SFR同在一个RAM存储阵列。 凡是没有分配给SFR的空间都可以作为通用寄存器GPR。 在18F系列中,SFR被“统一集中”在RAM的高地址空间 中(第15区的高128B)。 PIC18系列 RAM的大小随型号而不同,从32B~4KB。

PIC汇编语言程序设计基础

PIC汇编语言程序设计基础

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(十六进制)

PIC单片机指令系统和汇编语言程序设计

PIC单片机指令系统和汇编语言程序设计

PIC单片机指令系统和汇编语言程序设计PIC(Peripheral Interface Controller)单片机是一种微控制器,它由微芯科技公司推出,广泛应用于嵌入式系统中。

PIC单片机的指令系统是它的核心,它定义了单片机可以执行的操作和命令。

汇编语言程序设计是使用汇编语言编写的PIC单片机程序的过程。

PIC单片机的指令系统包含了多个指令,每个指令都对应着一条特定的操作。

这些操作可以是算术运算、逻辑运算、数据传输、位操作等。

指令系统的设计考虑了单片机的资源限制,以使其能够在有限的资源条件下完成各种任务。

汇编语言是一种低级语言,它与机器语言相似,但更具可读性。

在PIC单片机编程中,汇编语言常用于编写程序。

汇编语言程序设计包括了以下几个方面:1.汇编语言的语法:汇编语言有自己的语法规则,包括指令的书写方式、注释的使用、标号的定义等。

了解汇编语言的语法对于编写正确的程序至关重要。

2.寄存器的使用:PIC单片机有多个寄存器用于存储数据和指令。

在汇编语言程序中,需要了解不同寄存器的功能和使用方法,以便正确地读写数据。

3.指令的编写:编写汇编语言程序需要了解不同指令的功能、操作数的使用和指令的影响。

不同的指令可以实现不同的操作,如加法、逻辑运算、数据传输等。

4.程序的逻辑结构:汇编语言程序需要按照一定的逻辑结构编写,包括初始化程序、主循环、中断处理等。

了解如何组织程序结构对于编写清晰、可读性强的程序至关重要。

5.调试和优化:在编写汇编语言程序时,常常需要进行调试和优化,以确保程序能够正确地运行。

了解如何使用调试工具和优化技巧对于提高程序的效率和稳定性至关重要。

总之,PIC单片机的指令系统和汇编语言程序设计是使用PIC单片机进行编程的基础。

掌握了这些知识,可以编写高效、可靠的PIC单片机程序,实现各种嵌入式系统的功能。

PIC单片机汇编语言基础

PIC单片机汇编语言基础
2、程序设计基础
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单片机的汇编语言设计

第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单片机汇编指令
XEQU10

MOVLW1
MOVWFX ;1X(F10),作为初值
LOOP

MOVLW 1
SUBWF X,0
BTFSS STATUS,Z ;X=1否?
GOTO LOOP;X=1继续循环
┋;X1跳出循环
8)查表程序
查表是程序中经常用到的一种操作。下例是将十进制0~9转换成7段LED数字显示值。若以B口的RB0~RB6来驱动LED的a~g线段,则有如下关系:
例如F8和F9二个寄存器要比较大小:
MOVF 8,0 ;F8W
SUBWF 9,0;F9W(F8)W
BTFSC STATUS,Z;判断F8=F9否
GOTO F8=F9
BTFSC STATUS,C;C=0则跳
GOTO F9F8 ;C=1相减结果为正,F9F8
GOTO F9
F9 ;C=0相减结果为负,F9
单片机编程之汇编语言基础-PIC单片机汇编指令
1、程序的基本格式
先介绍二条伪指令:
EQU标号赋值伪指令
ORG地址定义伪指令
PIC16C5X在RESET后指令计算器PC被置为全1,所以PIC16C5X几种型号芯片的复位地址为:
PIC16C54/55:1FFH
PIC16C56:3FFH
PIC16C57/58:7FFH
MOVLW 0FH;0000 1111(0FH)
输入输出
TRIS 6;将W中的0FH写入B口控制器,
;B口高4位为输出,低4位为输入。
MOVLW 0C0H ; 11 000000(0C0H)
RB4,RB5输出0 RB6,RB7输出1
2)检查寄存器是否为零
如果要判断一个寄存器内容是否为零,很简单,现以寄存器F10为例:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回
4.2 汇编语言的语句格式
• 为了使编译器能够顺利的对用户编制的汇编语言源程序进 行代码转换,在编制源程序时必须依照汇编器的约定进行 书写。 • microchip公司提供的MPASM汇编器其汇编语言格式的一 般格式由4个字段组成,这4个段不都是必要的,但顺序不 能颠倒。 标 号 操作码 操作数 ;注 释
第四章 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 查表程序设计
(四)注释
• 注释部分用于对指令进行注解和说明。虽然注释可有可无, 但对于一个编程者来说,为了便于程序的阅读、交流、修 改和调试,在一些关键的语句上加标注释是一种好的编程 习惯;
Hale Waihona Puke • 注释由半角的引号“;”开始,它不是程序的功能部分,编 译器对该部分不做任何处理。
返回
4.3 常用伪指令
• 所谓伪指令就是“假指令”的意思,它不是为CPU识别的 指令、没有对应的机器码。它是为编译器服务的指令,如 确定指令的存储地址,为标号、字符串赋值等。 • 伪指令的使用使程序在书写、阅读上更方便。对于一些没 有说明意义的数字、RAM地址可以通过伪指令换为有意义 的字符来取代,使程序具有很好的可读性。如:在PIC的 指令中不能直接引用寄存器的名字取代地址,只能通过 EQU伪指令定义后引用其寄存器的符号。
3. 4.
5.
一个标号在系统中只能定义一次。
(二)操作码
1. 2. 在汇编语言语言源程序中,尽管其它3个字段有时是空的, 但操作码字段无论在何时都不能是空的。 操作码是指令的助记符,是指令功能的英文缩写,表示指 令的操作类型、性质,是汇编语言语句中的“关键字”, 因此是不能省略的。 汇编器将操作码进行汇编时,将其与一个预先建立的操作 码索引表相比较找出对应的机器码取而代之,这叫“代真” 当操作码前无标号时,操作码前至少要留有一个空格以防 汇编器将其误认为标号。
2.
3.
4.
尽管C语言已经成为各类单片机重要的开发手段,但是 汇编语言永远不会被淘汰,只有将汇编语言和C语言有 机的结合起来才能高效的实现应用软件的设计。
4.0 序论
• CPU所能识别的是由 “0”或“1”组成的二进制的 “机器语 言”。如: “SLEEP”指令的机器语言: “00000001100011” 。但机器语言不便于人们编写、阅读。 • 汇编语言是对机器语言的改进。使用了便于记忆、阅读的符 号、字符串来表示指令的操作码、操作数和操作数地址。是 一种符号语言,它与机器语言一一对应。 • 汇编语言CPU是不能识别的,因此必须使用一种工具将其 “翻译”为机器语言,这个工具叫“汇编器”或“汇编程 序”。使用“汇编器”或“汇编程序”帮助将汇编语言的源 程序转换为机器语言,这一过程称之为“汇编”。
( label ) ( opcode ) ( operand ) (commend)
1. 2.
标号必须从左面第1列开始,后面至少用1个空格与操 作码隔离(注意:标号后面没有冒号); 在无标号时,操作码前至少要保留一个或一个以 上的空格(建议使用“Tab”键分割标号列);
3.
操作码与操作数之间至少要保留一个或一个以上的 空格,如果有两个操作数时两者之间要由逗号(半 角)隔开(建议使用“Tab”键分割) ; 注释由分号(英文半角)引导,在标号、操作码和 操作数之后。标号也可以单独占一行单必需由分号 引导。
• 汇编语言的使用为我们提供了一种可以不涉及机器指令码 和实际存储器地址的便捷条件。 但是要想正确使用汇编语言编程必须了解“编译器” 所约定的内容,掌握如:语句格式、标号格式、数据进制 的表示方法、伪指令和汇编器的使用等等。 • 在下面的章节中将介绍MPASM编译器的使用、汇编语言 的语句格式、几种常用伪指令、程序格式和流程图。
4.
(一)标号
1.
2.
在指令前的标号实际上就是该指令的符号地址。
并不是每条指令都需加标号的,只有那些欲被其它语句引 用的语句之前才需要加标号。子程序第一条语句的标号实 际上就是该子程序的名称; 标号可以单独作为作为一行; 标号的第1个字符必须由字母或下划线 “_” 开始,并且从 每一行的第1列开始写。标号最多可由32个字母、数字和 其它符号组成。标号不能使用指令的助记符、寄存器名、 或其它系统中已有固定用途的字符串(系统的保留字)。
• 伪指令只在汇编的过程中进行一些辅助工作,是程序设计 人员向编译器发出的控制命令,告诉汇编器如何完成汇编 过程和一些规定的操作,以及控制汇编的输入、输出和数 据定位等。一旦汇编完成,伪指令就不存在了。
返回
4.1 MPASM汇编器的使用
• MPASM汇编器是美国microchip公司为其单片机开发、应 用者设计的一套语言工具软件。它不仅能将汇编语言源程 序“翻译”成机器语言,还能检查源程序中的语法错误或 格式错误并向用户给出题示。 • MPASM汇编器有两种版本: ① DOS版本的 MPASM.EXE; ② WINDOWS的 MPASMWIN.EXE。 有关如何使用MPASM将在后面相关章节中介绍。
为什么要学习汇编语言
1. 汇编语言是唯一一种面向机器的、最贴近及其硬件的编 程语言。学习汇编语言能够帮助深入了解单片机的构成、 工作过程和原理。因此特别适合初学阶段的学习; 汇编语言程序可以最有效的节省CPU的运行时间和数据 存储空间,代码使用效率最高。在简单的控制场合是一 种最佳选择; 由于汇编语言是一种直接控制CPU的指令语言,所以可 以产生精确的定时信号,这时其它语言所无法实现的;
3. 4.
(三)操作数
• 操作数是指令操作的对象,是数据或数据的地址。它们 可以使用数值或标号形式表示。 • 其中,数值可以使用二进制、八进制、十进制和十六进 制或ASCII字符值(参见讲义88页表4.2);而标号可以 是在此前定义或赋值的代表数字或地址标号或字符串。 • 如果操作数有两个,中间应由逗号隔开。
相关文档
最新文档