设为首页
收藏本站
开启辅助访问
登录
立即注册
只需一步,快速开始
会员
首页
BBS
文章
Portal
教程
最新
供电设计
联系我
直达
搜索
搜索
图文教程
磁力开关
馈电开关
采煤机
华宁集控
高爆开关
掘进机
视频教程
初入煤电
组合开关
移变低馈
资料下载
书籍
标规
资料
说明书
社区分类
煤电入门
煤电维修
维修电工
电气软件
电子技术
工控自动
本版
文章
帖子
百技网
»
首页
›
电子技术
›
单片机
›
PIC系列单片机程序设计基础
返回列表
发新帖
PIC系列单片机程序设计基础
[复制链接]
1653
|
0
|
2011-9-7 22:59:14
|
显示全部楼层
|
阅读模式
<
ORG ——地址定义伪指令
PIC16C5X
单片机
在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为:
PIC16C54/55:1FFH
PIC16C56:3FFH
PIC16C57/58:7FFH
一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清晰明了的格式供参考。
TITLE This is …… ;程序标题
;--------------------------------------
;名称定义和变量定义
;--------------------------------------
F0 EQU 0
RTCC EQU 1
PC EQU 2
STATUS EQU 3
FSR EQU 4
RA EQU 5
RB EQU 6
RC EQU 7
┋
PIC16C54 EQU 1FFH ;芯片复位地址
PIC16C56 EQU 3FFH
PIC16C57 EQU 7FFH
;-----------------------------------------
ORG PIC16C54 GOTO MAIN ;在复位地址处转入主程序
ORG 0 ;在0000H开始存放程序
;-----------------------------------------
;子程序区
;-----------------------------------------
DELAY MOVLW 255
┋
RETLW 0
;------------------------------------------
;主程序区
;------------------------------------------
MAIN
MOVLW B'00000000'
TRIS RB ;RB已由伪指令定义为6,即B口
┋
LOOP
BSF RB,7 CALL DELAY
BCF RB,7 CALL DELAY
┋
GOTO LOOP
;-------------------------------------------
END ;程序结束
注:MAIN标号一定要处在0页面内。
输出方向
PIC16C5X单片机的I/O 口皆为双向可编程,即每一根I/O 端线都可分别单独地由程序设置为输入或输出。这个过程由写I/O控制寄存器TRIS f来实现,写入值为“1”,则为输入;写入值为“0”,则为输出。
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为例:
MOVF 10,1 ;F10→F10,结果影响零标记状态位Z
BTFSS STATUS,Z ;F10为零则跳
GOTO NZ ;Z=0即F10不为零转入标号NZ处程序
┋ ;Z=1即F10=0处理程序
3) 比较二个寄存器的大小
要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。注意,相减的结果放入W,则不会影响二寄存器原有的值。
例如F8和F9二个寄存器要比较大小:
MOVF 8,0 ;F8→W
SUBWF 9,0 ;F9—W(F8)→W
BTFSC STATUS,Z ;判断F8=F9否
GOTO F8=F9
BTFSC STATUS,C ;C=0则跳
GOTO F9>F8 ;C=1相减结果为正,F9>F8
GOTO F9<F8 ;C=0相减结果为负,F9 ┋
4) 循环n次的程序
如果要使某段程序循环执行n次,可以用一个寄存器作计数器。下例以F10做计数器,使程序循环8次。
COUNT EQU 10 ;定义F10名称为COUNT(计数器)
┋
MOVLW 8
MOVWF COUNT LOOP ;循环体
LOOP
┋
DECFSZ COUNT,1 ;COUNT减1,结果为零则跳
GOTO LOOP ;结果不为零,继续循环
┋ ;结果为零,跳出循环
5)“IF……THEN……”格式的程序
下面以“IF X=Y THEN GOTO NEXT”格式为例。
MOVF X,0 ;X→W
SUBWF Y,0 ;Y—W(X)→W
BTFSC STATUS,Z ;X=Y 否
GOTO NEXT ;X=Y,跳到NEXT去执行。
┋ ;X≠Y
6)“FOR……NEXT”格式的程序
“FOR……NEXT”程序使循环在某个范围内进行。下例是“FOR X=0 TO 5”格式的程序。F10放X的初值,F11放X的终值。
START EQU 10
DAEND EQU 11
┋
MOVLW 0
MOVWF START ; 0→START(F10)
MOVLW 5
MOVWF DAEND ;5→DAEND(F11)
LOOP
┋
INCF START,1 ;START值加1
本新闻共4页,当前在第1页 [1] [
2
] [
3
] [
4
]
pic
,
程序设计基础
热帖推荐
优质服务是电力企业文化建设的核心
两地控制一台电动机
各种电线的分类和用途
电缆电线分类
电抗器在电力系统中的作用
控制一部电机,延时停止
新型材料电缆发展前景及辐照交联低烟无卤阻燃耐火电线电缆特点
控制电缆型号、名称、使用说明及用途
各种交联电缆的介绍及优缺点
串联电抗器电抗率的选择
串联电抗器抑制谐波的作用及电抗率的选择
保证倒闸操作正确率的具体做法
相关帖子
•
24C02在PIC单片机系统中的应用
•
PIC单片机开发的若干问题
•
PIC单片机的EEPROM读写实例及说明
•
PIC 8位单片机16F8X系列简介
•
PIC8位单片机16F8X系列简介
•
PIC单片机的I2C应用程序2
•
什么是PIC单片机
•
PIC8位单片机的分类和特点1
•
初识PIC单片机
•
基于GSM和PIC单片机的无人清洁护理机的设计
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
beita
回复楼主
返回列表
电子基础
电子制作
单片机
器件应用
图文推荐
如何升级VIP用户组
2018-01-13
软启动器的工作过程
2018-12-26
天津华宁KTC101主控器的内部结构
2021-05-14
煤矿电工教程:10、风机开关过流、短路、断相保护工作原理
2022-03-12
矿用防爆软启开关教程——13、软启开关近控启动过程
2020-02-15
热门排行
1
KJZ1-200(400)馈电开关原理分析
2
这个电气元件符号你认识吗?
3
煤矿电工教程:10、风机开关过流、短路、断相保护工作原理
4
馈电开关漏电闭锁故障维修_成伟维修笔记1
5
馈电开关漏电闭锁故障的维修_成伟维修笔记7
6
馈电开关漏电试验不跳闸故障维修_成伟维修笔记4
7
煤矿风机开关教程:11、过、欠压保护相关参数的设置
8
煤矿高压防爆开关漏电保护的研究
9
天津华宁KTC101主控器的内部结构
10
高防开关短路跳闸故障的维修_成伟维修笔记8