PIC系列单片机程序设计基础
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单片机做课程设计一、课程目标知识目标:1. 理解PIC单片机的基本结构、工作原理及功能特点;2. 掌握PIC单片机的编程语言和开发环境;3. 学会使用PIC单片机进行简单的电路设计和控制系统搭建;4. 了解单片机在现实生活中的应用,培养对电子技术的兴趣。
技能目标:1. 能够运用所学的PIC单片机知识,设计并完成具有一定功能的课程项目;2. 培养动手实践能力,学会焊接、调试和排错;3. 提高问题分析能力,能够针对实际问题设计合理的单片机控制系统;4. 增强团队协作能力,学会在项目中进行沟通与分工。
情感态度价值观目标:1. 培养学生对电子技术的热情,激发学习兴趣;2. 培养学生具备良好的学习习惯,积极面对挑战,勇于克服困难;3. 增强学生的创新意识,鼓励他们在课程设计中发挥想象力和创造力;4. 培养学生的环保意识,关注电子垃圾处理和资源节约。
本课程针对高年级学生,结合学科特点和教学要求,注重理论与实践相结合,旨在提高学生的动手能力、创新意识和团队协作能力。
通过课程学习,使学生掌握PIC单片机的相关知识,为今后从事电子技术领域的工作打下基础。
同时,课程目标分解为具体的学习成果,便于教学设计和评估,确保课程实施的有效性。
二、教学内容1. PIC单片机基本结构:介绍PIC单片机的内部结构,包括CPU、存储器、输入输出端口等,参考教材第二章内容;2. PIC单片机工作原理:讲解PIC单片机的工作原理,包括指令执行、中断处理等,参考教材第三章内容;3. 编程语言与开发环境:学习PIC单片机的编程语言(如C语言)及开发环境(如MPLAB),参考教材第四章内容;4. 基本电路设计与控制:教授如何使用PIC单片机设计简单的电路和控制系统,参考教材第五章内容;- 输入输出控制;- 定时器/计数器应用;- 中断处理;5. 应用案例与项目实践:分析PIC单片机在实际应用中的案例,如温度控制系统、智能小车等,参考教材第六章内容;6. 课程项目设计与实施:指导学生进行课程项目设计,要求具备一定功能,并能实际操作,结合教材内容及实际需求进行。
pic单片机课程设计

pic单片机课程设计一、课程目标知识目标:1. 让学生掌握PIC单片机的基本结构、工作原理及功能特点;2. 使学生了解并熟练运用PIC单片机的指令系统,进行简单的程序设计;3. 让学生掌握PIC单片机外围电路的设计方法,并能进行基本的电路搭建。
技能目标:1. 培养学生具备使用PIC单片机进行嵌入式系统开发的能力;2. 培养学生运用编程软件(如MPLAB)进行程序编写、调试的能力;3. 提高学生分析问题、解决问题的能力,使其能够运用所学知识解决实际问题。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发其探索精神;2. 培养学生具备良好的团队合作意识,使其在项目实践中互相学习、共同成长;3. 培养学生具备创新意识,鼓励其在课程设计中勇于尝试新方法、新技术。
课程性质:本课程为实践性较强的课程,以项目为导向,注重培养学生的动手能力和实际应用能力。
学生特点:学生具备一定的电子基础和编程基础,对新技术具有好奇心,喜欢动手实践。
教学要求:结合学生特点,课程设计应注重理论与实践相结合,充分调动学生的积极性,引导其主动参与教学活动,提高学生的实际操作能力。
在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在课程中收获成长。
通过课程目标的实现,为学生在后续的嵌入式系统开发领域打下坚实基础。
二、教学内容1. PIC单片机基本原理- 单片机概述、发展历程及分类- PIC单片机的内部结构、工作原理及性能特点2. PIC单片机指令系统与编程- 指令集介绍、指令格式及操作方法- 程序设计基础:顺序结构、分支结构、循环结构- 编程实例分析及练习3. PIC单片机外围电路设计- 常用外围元器件及其功能- 基本电路设计方法:输入/输出接口、模拟/数字转换、定时器/计数器等- 电路搭建与调试技巧4. 嵌入式系统项目实践- 项目分析与需求分析- 系统设计、程序编写及调试- 系统测试与优化5. 教学内容安排与进度- 第一章:PIC单片机基本原理(2课时)- 第二章:PIC单片机指令系统与编程(4课时)- 第三章:PIC单片机外围电路设计(4课时)- 第四章:嵌入式系统项目实践(6课时)教学内容依据课程目标,结合教材章节进行组织,注重理论与实践相结合,使学生能够循序渐进地掌握PIC单片机的相关知识和技能。
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系列单片机入门简介51系单片机的对比

PIC系列单⽚机⼊门简介51系单⽚机的对⽐PIC单⽚机的特点1. I/O⼝具有20mA的驱动能⼒(可以直接驱动LED发光)2. 8路, 10位的AD转换3. I2C, SPI, USART, USB, CAN接⼝4. WDT(看门狗)5. CCP(脉冲 / 捕捉 / ⽐较)6. 内置EEPROM7. 3路定时器8. 多种中断源9. ⽀持休眠的低功耗模式10. 流式并⾏接⼝11. 内置LCD控制器12. 芯⽚加密PIC16F877A存储资源8K * 14位的FLASH程序存储器368 * 8位数据存储器RAM256 * 8位EEPROM存储模块特殊功能寄存器SFR(Special Function Register)特殊功能寄存器是单⽚机中各功能部件对应的寄存器,⽤于存放相应功能部件的控制命令,状态或数据。
学单⽚机主要就是学习特殊功能寄存器的使⽤。
指令集使⽤RISC(Reduced Instruction Set Computer-RISC)精简指令集计算集的PIC单⽚机,只有35条指令,常⽤的约20条。
好学,易⽤,绝⼤多数位单周期指令,执⾏速度快。
⽽使⽤CISC(Complex Instruction Set Computers)复杂指令集计算集的MCS-51系列单⽚机指令有111条指令。
PIC单⽚机寻址⽅式1. 寄存器间接寻址2. ⽴即数寻址3. 直接寻址4. 位寻址PIC单⽚机引脚PIC16F877A单⽚机引脚1. VSS, VDD为电源和地线引脚(图上由于是仿真,隐藏了这两个脚)2. 13 | 14为时钟振荡器输⼊/输出引脚3. 1为复位信号和编程输⼊引脚4. 输⼊/输出端⼝和第⼆,第三功能引脚PIC与51单⽚机的对⽐PIC系列MCS-51系列寻址⽅式个数4个7个1K字节的储存器指令条数1024条指令600条指令。
PIC单片机的C语言编程

PIC单片机的C语言编程简介PIC(Peripheral Interface Controller)是一种广泛使用的单片机系列,由美国微芯科技公司(Microchip Technology Inc.)开发和生产。
其特点是体积小、功耗低、功能强大,并且具有高性价比,因此在嵌入式系统领域得到了广泛的应用。
在PIC单片机的编程中,C语言是最常用的编程语言之一。
本文将介绍如何在PIC单片机上使用C语言进行编程。
准备工作在开始C语言编程之前,我们需要准备以下工具和设备:1.PIC单片机开发板:选择一款适合你的需求的PIC单片机开发板,例如PIC16F877A。
2.编程软件:Microchip公司的MPLAB IDE是最常用的PIC单片机编程软件之一,可以在官方网站上免费下载安装。
3.编程语言:C语言是PIC单片机常用的编程语言,具有丰富的库函数和易于学习的语法。
第一个C程序编写第一个C程序是入门PIC单片机编程的第一步。
以下是一个简单的LED闪烁程序示例:#include <xc.h>// 包含使用于PIC单片机的头文件#define _XTAL_FREQ 4000000 // 定义晶振频率为4MHz// 主函数void main(void){TRISB = 0b00000000; // 将PORTB所有引脚设为输出PORTB = 0b00000001; // 将RB0引脚输出高电平while(1){PORTBbits.RB0 = 1; // RB0引脚输出高电平__delay_ms(1000); // 延时1秒PORTBbits.RB0 = 0; // RB0引脚输出低电平__delay_ms(1000); // 延时1秒}}在这个程序中,我们使用了xc.h头文件来包含适用于PIC单片机的库函数和宏定义。
使用#define指令定义了晶振频率为4MHz,可以根据自己的实际情况进行修改。
在main函数中,通过TRISB寄存器将PORTB所有引脚设置为输出模式,并使用PORTB寄存器将RB0引脚输出高电平。
pic单片机汇编语言程序设计实例

pic单片机汇编语言程序设计实例一、前言单片机是现代电子技术中的重要组成部分,而汇编语言则是单片机编程中最基础的语言。
本文将以PIC单片机为例,介绍汇编语言程序设计实例。
二、PIC单片机简介PIC(Peripheral Interface Controller)是一种微控制器,由美国Microchip Technology公司开发。
PIC单片机具有体积小、功耗低、价格便宜等优点,广泛应用于各种电子设备中。
三、汇编语言基础1. 寄存器PIC单片机有许多寄存器,其中最常用的有W寄存器和F寄存器。
W 寄存器是一个8位的通用寄存器,可用于存储临时数据;F寄存器则是一个8位的特殊功能寄存器,可用于控制各种外设。
2. 指令集PIC单片机的指令集非常丰富,涵盖了各种数据操作、逻辑运算、跳转等指令。
例如:- MOVF:将指定地址中的数据移动到W寄存器中;- ADDWF:将指定地址中的数据与W寄存器中的数据相加,并将结果保存到指定地址中;- BTFSS:测试指定地址中某一位是否为0,并跳过下一条指令。
3. 标志位PIC单片机还有一些标志位,用于记录各种状态信息。
其中最常用的有C(进位标志位)、Z(零标志位)和DC(半进位标志位)。
四、汇编语言程序设计实例下面以一个简单的LED闪烁程序为例,介绍PIC单片机汇编语言程序设计。
1. 硬件连接将一个LED连接到PIC单片机的RA0口,通过一个220欧姆电阻限流。
将VDD和VSS分别连接到5V和地。
2. 程序设计首先定义RA0口为输出口,并将其置为低电平。
然后进入一个死循环,在循环中将RA0口置为高电平、延时一段时间、再将RA0口置为低电平、再延时一段时间。
程序如下:LIST P=16F84AINCLUDE "P16F84A.INC"__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &_HS_OSCORG 0x00GOTO MAINORG 0x04MAIN:MOVLW 0x00 ; 将W寄存器清零TRIS PORTA ; 将PORTA定义为输出口LOOP:BSF PORTA, 0 ; 将PORTA.0置为高电平CALL DELAY ; 延时BCF PORTA, 0 ; 将PORTA.0置为低电平CALL DELAY ; 延时GOTO LOOPDELAY:MOVLW 0x64 ; 将W寄存器设置为100(十进制)DELAY_LOOP:NOP ; 空操作,延时1个指令周期DECFSZ W, F ; 将W寄存器减1,如果不为0则跳转到DELAY_LOOPGOTO DELAY_LOOP ; 否则跳出循环RETURN ; 返回主程序3. 编译和烧录将程序保存为.asm文件,使用MPLAB IDE进行编译和烧录。
PIC单片机基础教程

PIC单片机基础教程一、介绍单片机是一种集成了微处理器核心、存储器、外设接口等功能于一芯片上的微型计算机系统,广泛应用于各种电子设备中。
其中,PIC单片机是由微芯科技公司所生产的单片机系列产品,具有低成本、高性能、易编程等特点,被广泛应用于各个领域。
二、单片机基础知识1.硬件组成:PIC单片机包含微处理器核心、存储器、电源和时钟、IO口、ADC/DAC、串口等硬件组件,这些组件共同协作完成各种任务。
2. 存储器类型:PIC单片机主要有Flash存储器和RAM存储器,Flash存储器用于存储程序代码和常量数据,RAM存储器用于存储变量数据。
3.计时器/计数器:PIC单片机内置了多个计时器/计数器,用于进行时间测量、频率计算等操作。
4.IO口:PIC单片机具有多个IO口,可以通过IO口与外部器件进行数据交互。
5.ADC/DAC:PIC单片机内置了ADC(模数转换器)和DAC(数模转换器),可以实现模拟信号的采集和输出。
6.串口通信:PIC单片机支持串口通信,可以与其他设备进行数据通信。
7.中断:PIC单片机具有中断功能,可以在一些事件发生时暂停当前任务,执行中断服务程序。
三、PIC单片机开发工具1.MPLABIDE:这是一款由微芯科技公司提供的PIC单片机开发集成开发环境,可以用于编写、编译、调试PIC单片机的代码。
2. Hi-Tech C编译器:这是一款专门用于PIC单片机的C语言编译器,可以将C语言代码编译成PIC单片机可以执行的机器码。
3. PICKit:这是一款由微芯科技公司提供的PIC单片机编程器和调试器,可以与PIC单片机进行连接,用于烧录程序和进行调试。
四、PIC单片机编程基础1.引脚定义:在编程之前,首先需要定义PIC单片机的IO引脚,以便与外部器件进行连接。
2.程序结构:PIC单片机的程序结构由初始化、主循环和中断服务程序等部分组成。
3.输入输出操作:通过IO口可以实现数码管显示、LED亮灭、开关输入等操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、PIC单片机程序的基本格式先介绍二条伪指令: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页面内。
2、PIC单片机程序设计基础1) 设置 I/O 口的输入/输出方向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输出12) 检查寄存器是否为零如果要判断一个寄存器内容是否为零,很简单,现以寄存器F10为例:MOVF 10,1 ;F10→F10,结果影响零标记状态位ZBTFSS STATUS,Z ;F10为零则跳GOTO NZ ;Z=0即F10不为零转入标号NZ处程序┋ ;Z=1即F10=0处理程序3) 比较二个寄存器的大小要比较二个寄存器的大小,可以将它们做减法运算,然后根据状态位C来判断。
注意,相减的结果放入W,则不会影响二寄存器原有的值。
例如F8和F9二个寄存器要比较大小:MOVF 8,0 ;F8→WSUBWF 9,0 ;F9—W(F8)→WBTFSC STATUS,Z ;判断F8=F9否GOTO F8=F9BTFSC STATUS,C ;C=0则跳GOTO F9>F8 ;C=1相减结果为正,F9>F8GOTO F9<F8 ;C=0相减结果为负,F9<F8┋4) 循环n次的程序如果要使某段程序循环执行n次,可以用一个寄存器作计数器。
下例以F10做计数器,使程序循环8次。
COUNT EQU 10 ;定义F10名称为COUNT(计数器)┋MOVLW 8MOVWF COUNT LOOP ;循环体LOOP┋DECFSZ COUNT,1 ;COUNT减1,结果为零则跳GOTO LOOP ;结果不为零,继续循环┋ ;结果为零,跳出循环5)“IF……THEN……”格式的程序下面以“IF X=Y THEN GOTO NEXT”格式为例。
MOVF X,0 ;X→WSUBWF Y,0 ;Y—W(X)→WBTFSC STATUS,Z ;X=Y 否GOTO NEXT ;X=Y,跳到NEXT去执行。
┋ ;X≠Y6)“FOR……NEXT”格式的程序“FOR……NEXT”程序使循环在某个范围内进行。
下例是“FOR X=0 TO 5”格式的程序。
F10放X的初值,F11放X的终值。
START EQU 10DAEND EQU 11┋MOVLW 0MOVWF START ;0→START(F10)MOVLW 5MOVWF DAEND ;5→DAEND(F11)LOOP┋INCF START,1 ;START值加1MOVF START,0SUBWF DAEND,0 ;START=DAEND ?(X=5否)BTFSS STATUS,ZGOTO LOOP ;X<5,继续循环┋ ;X=5,结束循环7)“DO WHILE……END”格式的程序“DO WHILE……END”程序是在符合条件下执行循环。
下例是“DO WHILE X=1”格式的程序。
F10放X的值。
X EQU 10┋MOVLW 1MOVWF X ;1→X(F10),作为初值LOOP┋MOVLW 1SUBWF X,0BTFSS STATUS,Z ;X=1否?GOTO LOOP ;X=1继续循环┋ ;X≠1跳出循环8) 查表程序查表是程序中经常用到的一种操作。
下例是将十进制0~9转换成7段LED数字显示值。
若以B口的RB0~RB6来驱动LED的a~g线段,则有如下关系:设LED为共阳,则0~9数字对应的线段值如下表:十进数线段值十进数线段值0 C0H 5 92H1 C9H 6 82H2 A4H 7 F8H3 B0H 8 80H4 99H 9 90HPIC单片机的查表程序可以利用子程序带值返回的特点来实现。
具体是在主程序中先取表数据地址放入W,接着调用子程序,子程序的第一条指令将W置入PC,则程序跳到数据地址的地方,再由“RETLW”指令将数据放入W返回到主程序。
下面程序以F10放表头地址。
MOVLW TABLE ;表头地址→F10MOVWF 10┋MOVLW 1 ;1→W,准备取“1”的线段值ADDWF 10,1 ;F10+W =“1”的数据地址CALL CONVERTMOVWF 6 ;线段值置到B口,点亮LED┋CONVERT MOVWF 2 ;W→PC TABLERETLW 0C0H ;“0”线段值RETLW 0F9H ;“1”线段值┋RETLW 90H ;“9”线段值9)“READ……DATA,RESTORE”格式程序“READ……DATA”程序是每次读取数据表的一个数据,然后将数据指针加1,准备取下一个数据。
下例程序中以F10为数据表起始地址,F11做数据指针。
POINTER EQU 11 ;定义F11名称为POINTER┋MOVLW DATAMOVWF 10 ;数据表头地址→F10CLRF POINTER ;数据指针清零┋MOVF POINTER,0ADDWF 10,0 ;W =F10+POINTER┋INCF POINTER,1 ;指针加1CALL CONVERT ;调子程序,取表格数据┋CONVERT MOVWF 2 ;数据地址→PCDATA RETLW 20H ;数据┋RETLW 15H ;数据如果要执行“RESTORE”,只要执行一条“CLRF POINTER”即可。
10) 延时程序如果延时时间较短,可以让程序简单地连续执行几条空操作指令“NOP”。
如果延时时间长,可以用循环来实现。
下例以F10计算,使循环重复执行100次。
MOVLW D‘100’MOVWF 10LOOP DECFSZ 10,1 ;F10—1→F10,结果为零则跳GOTO LOOP┋延时程序中计算指令执行的时间和即为延时时间。
如果使用4MHz振荡,则每个指令周期为1μS。
所以单周期指令时间为1μS,双周期指令时间为2μS。
在上例的LOOP循环延时时间即为:(1+2)*100+2=302(μS)。
在循环中插入空操作指令即可延长延时时间:MOVLW D‘100’MOVWF 10LOOP NOPNOPNOPDECFSZ 10,1GOTO LOOP┋延时时间=(1+1+1+1+2)*100+2=602(μS)。
用几个循环嵌套的方式可以大大延长延时时间。
下例用2个循环来做延时:MOVLW D‘100’MOVWF 10LOOP MOVLW D‘16’MOVWF 11LOOP1 DECFSZ 11,1GOTO LOOP1DECFSZ 10,1GOTO LOOP┋延时时间=1+1+[1+1+(1+2)*16-1+1+2]*100-1=5201(μS)11) PIC单片机RTCC计数器的使用RTCC是一个脉冲计数器,它的计数脉冲有二个来源,一个是从RTCC引脚输入的外部信号,一个是内部的指令时钟信号。
可以用程序来选择其中一个信号源作为输入。
RTCC可被程序用作计时之用;程序读取RTCC寄存器值以计算时间。
当RTCC作为内部计时器使用时需将RTCC管脚接VDD或VSS,以减少干扰和耗电流。
下例程序以RTCC做延时:RTCC EQU 1┋CLRF RTCC ;RTCC清0MOVLW 07HOPTION ;选择预设倍数1:256→RTCCLOOP MOVLW 255 ;RTCC计数终值SUBWF RTCC,0BTFSS STATUS,Z ;RTCC=255?GOTO LOOP┋这个延时程序中,每过256个指令周期RTCC寄存器增1(分频比=1:256),设芯片使用4MHz振荡,则:延时时间=256*256=65536(μS)RTCC是自振式的,在它计数时,程序可以去做别的事情,只要隔一段时间去读取它,检测它的计数值即可。
12) 寄存器体(BANK)的寻址对于PIC16C54/55/56,寄存器有32个,只有一个体(BANK),故不存在体寻址问题,对于PIC16C57/58来说,寄存器则有80个,分为4个体(BANK0-BANK3)。
在对F4(FSR)的说明中可知,F4的bit6和bit5是寄存器体寻址位,其对应关系如下:Bit6 Bit5 BANK 物理地址0 0 BANK0 10H~1FH0 1 BANK1 30H~3FH1 0 BANK2 50H~5FH1 1 BANK3 70H~7FH当芯片上电RESET后,F4的bit6,bit5是随机的,非上电的RESET则保持原先状态不变。