PIC单片机的基本编程汇总,初学者必看

2020-01-16来源: elecfans关键字:PIC单片机  基本编程  初学者

适合3ePIC试验板,爱晶产品销售服务做的不好,好多C程序都是自己写的,不过汇编程序参考一下不错。

PIC单片机的基本编程汇总,初学者必看

;------------------------------------------------------------------------------------------

;单双位变换显示实验参考程序注意:此程序请用单步执行(实验1-1.asm)

;------------------------------------------------------------------------------------------

STATUS EQU03H;特殊功能寄存器定义

TRISD EQU88H;特殊功能寄存器定义

PORTD EQU08H;特殊功能寄存器定义

TRISE EQU89H;特殊功能寄存器定义

PORTE EQU09H;特殊功能寄存器定义

ORG0000H;复位地址

NOP;MPLAB专用语句

STBSFSTATUS,5;选择体1

CLRFTRISD;PORTD设置为输出

CLRFTRISE;PORTE设置为输出

BCFSTATUS,5;选择体0

BCF PORTE,0;RE0清零,选通LED

LOOPMOVLWB‘10101010’

MOVWFPORTD;设置PORTD的值

MOVLWB‘01010101’

MOVWFPORTD;再次设置PORTD的值

GOTOLOOP;循环操作

;------------------------------------------------------------------------------------------

END

;------------------------------------------------------------------------------------------

本文引用地址: http://www.21ic.com/app/mcu/201810/786583.htm

;------------------------------------------------------------------------------------------

;软件延时自动计数实验参考程序(实验1-2.asm)

;------------------------------------------------------------------------------------------

STATUS EQU03H ;特殊功能寄存器定义

TRISD EQU88H;特殊功能寄存器定义

PORTDEQU08H;特殊功能寄存器定义

TRISE EQU89H;特殊功能寄存器定义

PORTEEQU09H;特殊功能寄存器定义

ORG0000H;复位地址

NOP;MPLAB专用语句

STBSFSTATUS,5;选择体1

CLRF TRISD;PORTD设置为输出

CLRF TRISE;PORTE设置为输出

BCFSTATUS,5;选择体0

CLRF PORTD;PORTD清零

BCF PORTE,0;RE0清零,选通LED

LOOPCALL DELAY1S;调用1S延迟程序

INCF PORTD;PORTD+1

GOTO LOOP;循环操作

;------------------------------------------------------------------------------------------

;1秒延时子程序参考程序

;------------------------------------------------------------------------------------------

DELAY1S MOVLW 06H;外循环常数

MOVWF 20H;外循环寄存器

LOP0MOVLW 0EBH;中循环常数

MOVWF 21H;中循环寄存器

LOP1MOVLW 0ECH;内循环常数

MOVWF 22H;内循环寄存器

LOP2DECFSZ 22H;内循环寄存器递减

GOTO LOP2;继续内循环

DECFSZ 21H;中循环寄存器递减

GOTO LOP1;继续中循环

DECFSZ 20H;外循环寄存器递减

GOTO LOP0;继续外循环

RETURN;返回

;------------------------------------------------------------------------------------------

END

;------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------

;霓虹灯显示实验参考程序(实验1-3.ASM)

;------------------------------------------------------------------------------------------

STATUS EQU03H;特殊功能寄存器定义

TRISD EQU88H;特殊功能寄存器定义

PORTDEQU08H;特殊功能寄存器定义

TRISE EQU89H;特殊功能寄存器定义

PORTEEQU09H;特殊功能寄存器定义

PCLEQU02H;特殊功能寄存器定义

COUNTEREQU30H;自定义变量

ORG0000H;复位地址

NOP;MPLAB专用语句

STBSFSTATUS,5;选择数据存储器体1

CLRF TRISD;定义RD口为输出

CLRF TRISE;PORTE设置为输出

BCFSTATUS,5;选择数据存储器体0

CLRF PORTD;PORTD清零

BCF PORTE,0;RE0清零,选通LED

POPCLRF COUNTER;自定义变量COUNTER清0

LOOPMOVF COUNTER,0;取出变量COUNTER值

CALL TABLE;查表对应数据

MOVWF PORTD;从PORTD输出

CALL DELAY50MS;调用50MS延时

INCF COUNTER,1;循环变量递增

MOVF COUNTER,0;取出当前COUNTER变量值

SUBLW .20;是否已取出20个数据

BTFSC STATUS,2;查验Z标志位

GOTO POP;Z=1,表示一次循环结束,COUNTER重新复位

GOTO LOOP;返回继续

;------------------------------------------------------------------------------------------

;数据表内容

;------------------------------------------------------------------------------------------

TABLE

ADDWFPCL,1;考察偏移量

RETLWB‘00011000’;第0种显示状态

RETLWB‘00111100’ ;第1种显示状态

RETLWB‘01111110’ ;第2种显示状态

RETLWB‘11111111’ ;第3种显示状态

RETLWB‘01111110’ ;第4种显示状态

RETLWB‘00111100’;第5种显示状态

RETLWB‘00011000’ ;第6种显示状态

RETLWB‘00000000’;第7种显示状态

RETLWB‘10000001’ ;第8种显示状态

RETLWB‘11000011’;第9种显示状态

RETLWB‘11100111’ ;第10种显示状态

RETLWB‘11111111’;第11种显示状态

RETLWB‘11100111’ ;第12种显示状态

RETLWB‘11000011’;第13种显示状态

RETLWB‘10000001’ ;第14种显示状态

RETLWB‘00000000’;第15种显示状态

RETLWB‘11111111’;第16种显示状态

RETLWB‘00000000’;第17种显示状态

RETLWB‘11111111’;第18种显示状态

RETLWB‘00000000’;第19种显示状态

;------------------------------------------------------------------------------------------

;50MS软件延时子程序

;------------------------------------------------------------------------------------------

DELAY50MS

MOVLW 41H;外循环常数

MOVWF 20H;外循环寄存器

LOOP1 MOVLW 0FFH;内循环常数

MOVWF 21H;内循环寄存器

LOOP2DECFSZ 21H;内循环寄存器递减

GOTO LOOP2 ;继续内循环

DECFSZ 20H;外循环寄存器递减

GOTO LOOP1 ;继续外循环

RETURN;返回

;------------------------------------------------------------------------------------------

END

;------------------------------------------------------------------------------------------

;------------------------------------------------------------------------------------------

;动态数码自动计数显示实验参考程序(实验2-1.asm)

;------------------------------------------------------------------------------------------

LISTP=16F877A

INCLUDE“P16F877A.INC”;头文件的设定

;------------------------------------------------------------------------------------------

;BAW、SHW、 GEW和COUNTER变量的定义

COUNTEREQU71H;可用于循环的次数变量

QWEQU7CH;可用于十进制千位变量

BAWEQU7DH;可用于十进制百位变量

SHWEQU7EH;可用于十进制十位变量

GEWEQU7FH;可用于十进制个位变量

;------------------------------------------------------------------------------------------

ORG0000H;复位地址

NOP;MPLAB专用语句

CLRFQW

CLRFBAW

CLRFSHW

CLRFGEW;个、十、百寄存器清零

STBSFSTATUS,RP0;选择体1

CLRFTRISD;PORTD设置为输出

MOVLWB‘11100001’

MOVWFTRISB;PORTB的B2-5设置为输出,其余输入

BCFSTATUS,RP0;选择体0

CLRFPORTD;PORTD清零

LGEWMOVFGEW,W;个位计数处理

SUBLW09H

BTFSCSTATUS,Z

GOTOLSHW;个位有进位,转十位计数处理

INCFGEW,F;无进位,各位加1

MOVFGEW,W

MOVWF60H;存入个位寄存器

GOTOPINC;数值动态显示

LSHWCLRFGEW;十位计数处理

CLRF60H;个位有进位,个位清零

MOVFSHW,W;十位处理

SUBLW09H

BTFSCSTATUS,Z

GOTOLBAW;十位有进位,转百位计数处理

INCFSHW,F

MOVFSHW,W

MOVWF61H

GOTOPINC;数值动态显示

LBAWCLRFSHW;百位计数处理

CLRF61H;百位有进位,十位清零

MOVFBAW,W

SUBLW09H

BTFSCSTATUS,Z

GOTOLQW;百位有进位,转千位计数处理

INCFBAW,F

MOVFBAW,W

MOVWF62H

GOTOPINC

LQWCLRFBAW;千位计数处理

CLRF62H;千位有进位,百位清零

MOVFQW,W

SUBLW09H

BTFSCSTATUS,Z

GOTOQL;千位有进位,转清零处理

INCFQW,F

MOVFQW,W

MOVWF63H

GOTOPINC

QLCLRFGEW;个位计数处理

CLRFSHW;十位计数处理

CLRFBAW;百位计数处理

CLRFQW;千位计数处理

PINCNOP;数值动态显示处理

DTJPMOVLW19H

MOVWFCOUNTER;递增计数时间常数设置

LJ DECFSZCOUNTER,1

GOTOLS;时间未到,继续动态扫描显示

GOTOLR;时间到,递增计数

LSBCFPORTB,1;显示个位数值编码

BSFPORTB,2

BSFPORTB,3

BSFPORTB,4

MOVFGEW,W

CALLBMA;调要显示的数值的编码

MOVWFPORTD

CALLDELAY10MS;动态扫描转换时间控制

BSFPORTB,1;显示十位数值编码

BCFPORTB,2

BSFPORTB,3

BSFPORTB,4

MOVFSHW,W

CALLBMA;调要显示的数值的编码

MOVWFPORTD

CALLDELAY10MS;调用延时10MS程序

BSFPORTB,1;显示百位数值的编码

BSFPORTB,2

BCFPORTB,3

BSFPORTB,4

MOVFBAW,W

CALLBMA;调要显示的数值的编码

MOVWFPORTD

CALLDELAY10MS;调用延时10MS程序

BSFPORTB,1;显示千位数值的编码

BSFPORTB,2

BSFPORTB,3

BCFPORTB,4

MOVFQW,W

CALLBMA;调要显示的数值的编码

MOVWFPORTD

CALLDELAY10MS;调用延时10MS程序

GOTO LJ;返回显示时间记时

LR GOTOLGEW;返回主程序

;-----------------------------------------------------------------------------------------

;10MS延时

;-----------------------------------------------------------------------------------------

DELAY10MS

MOVLW03H;0fh外循环常数

MOVWF20H;外循环寄存器

LOOP2MOVLW0FFH;中循环常数

MOVWF21H;中循环寄存器

L01DECFSZ21H,1;中循环寄存器递减

GOTOL01;继续中循环

DECFSZ20H,1;外循环寄存器递减

GOTOLOOP2;继续外循环

RETURN;返回

;------------------------------------------------------------------------------------------

;编码查询

;------------------------------------------------------------------------------------------

BMAADDWFPCL,F;考察偏移量

RETLW3FH;“0” 编码

RETLW06H;“1” 编码

RETLW5BH;“2” 编码

RETLW4FH;“3” 编码

RETLW66H;“4” 编码

RETLW6DH;“5” 编码

RETLW7DH;“6” 编码

RETLW07H;“7” 编码

RETLW7FH;“8” 编码

RETLW6FH;“9” 编码

;------------------------------------------------------------------------------------------

END

;------------------------------------------------------------------------------------------

;------------------------------------------------------------------------------------------

;高4位自动计数低4位手动计数显示实验参考程序(实验2-2.asm)

;------------------------------------------------------------------------------------------

LISTP=16F877A

INCLUDE“P16F877A.INC”;头文件的设定

;------------------------------------------------------------------------------------------

AAAEQU10H;高4位计数递增常数

GSWEQU30H;高4位值寄存器

DSWEQU31H;低4位值寄存器

ORG0000H ;复位地址

NOP

[1] [2]
关键字:PIC单片机  基本编程  初学者 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic485873.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:PIC单片机如何实现单按键输入LED灯点亮
下一篇:基于PIC16F630的I/O口对流水灯的控制

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

pic单片机ad转换c程序分享
法的工作过程是:当模拟电压Vi加到V/F的输入端,便产生频率F与Vi成正比的脉冲,在一定的时间内对该脉冲信号计数,时间到,统计到计数器的计数值正比于输入电压Vi,从而完成A/D转换。pic单片机ad转换c程序#include《pic.h》#define uchar unsigned char#define uint unsigned int__CONFIG(0x3FB1);void init();void Delay();unsigned int getad();void Display(unsigned char a,unsigned char b,unsigned char c);unsigned char DIG_CODE[17
发表于 2020-01-20
pic单片机ad转换c程序分享
pic单片机多路ad切换程序介绍
PIC单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。PIC 单片机是一个小的计算机。PIC单片机有计算功能和记忆内存像CPU并由软件控制运行。然而,处理能力—般,存储器容量也很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。如果是同样的体系结构,时钟频率较高的处理能力
发表于 2020-01-20
pic单片机多路ad切换程序介绍
大神对PIC单片机的简单入门时如何讲解的
你所说,那你就不妨跟着我再失败一次, 反正吗多一次失败又不纳税,嘿嘿。不过你也要有思想准备,彻底弄明白是个渐进的过程。要说这程序和单片机内部结构,还真是老大难,不过蟹黄蟹肉可都在里面。我现在要是给你说PIC单片机是哈佛结构的,51系列是冯-诺伊曼结构的,恐怕你要立马走人了。所以我得用点心思不让你溜号。好在PIC系列的制造商(microchip 微芯公司 美国)理解我等苦衷,全部只有35条指令,而且有一些指令我们一般很少使用,常用的也就十几句,用的时候查手册,无需记忆。就算我们两天学习一句,也就两三个月时间,总比到老了还怕它们强啊。废话少说先看下面的两个例语:my_name006: movlw 02h '常数2进入
发表于 2020-01-20
大神对PIC单片机的简单入门时如何讲解的
外加电压检测复位电路设计方案
1.6.5 PIC单片机的外接电压检测复位电路举例  1.设计思路  有许多型号单片机的内部均不具备掉电复位功能,即使对于内部包含该功能的PIC单片机,其复位门槛电压值是固定不可更改的,有时不能满足用户的需求,因此,外加电压检测复位电路也是较常见的设计方案。  对于片内带有掉电复位功能BOR的PIC单片机,在使用外接电压检测复位电路时,就必须将内部BUR功能禁止,方法是将系统配置字的BUDEN位设置为0。  对于内部不带BOR功能的PIC单片机,其电源控制寄存器PCUN没有BOR标志位,无法准确识别由外接电压检测复位电路引起的单片机复位,因此在程序执行过程中在MCLR引脚施加了人工复位信号引起的复位。  与外接电
发表于 2020-01-20
外加电压检测复位电路设计方案
以PIC单片机为主要核心控制元件的LED模块书写显示屏设计
本文采用PIC 16F877A单片机为主要核心控制元件,设计了一个32×32 LED“ title=”LED“》LED” TItle=“LED”》LED“ TItle=”LED“》LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。系统系统总体
发表于 2020-01-20
以PIC单片机为主要核心控制元件的LED模块书写显示屏设计
以PIC单片机为核心的步进电机自适应控制技术研究
),投影仪、数码摄像机、放像机(VCD、DVD等)、大型望远镜、卫星天线定位系统、医疗器械、条码扫描仪以及各种可控机械工具等等。随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步时电机的运行性能提出了更高的要求。本文就采用当前流行的PIC单片机来对步进电机进行控制以及自适应控制技术在步进电机中的应用进行了研究和讨论。2、自适应控制原理2.1系统原理框图图1所示为模型参考自适应控制系统原理框图。从图中我们可以看出与典型的反馈控制系统的不同之处是在图1中增加了参考模型和自适应机构。在自适应控制系统中,当偏差信号e(t)=x(t)-y(t)进入自适应控制回路后,经运算产生准实时的调整作用,从而改变控制器的参数
发表于 2020-01-20
以PIC单片机为核心的步进电机自适应控制技术研究
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved