PIC单片机程序设计的基本格式

最新更新时间:2013-03-05来源: EDN关键字:PIC  单片机程序  基本格式 手机看文章 扫描二维码
随时随地手机看文章

  为了快速掌握PIC单片机源程序的基本结构,这里给出一个典型的程序结构框架。建立源程序时首先用伪指令TITLE提供程序的标题,接着给出整个程序的总说明,并用列表伪指令LIST指定所用单片机型号和文件输出格式,再利用INCLUDE伪指令读入MPASM中提供的定义文件如《P16F84INC》,然后对片内常用资源进行定义,再给出一般程序的基本结构框架。现举例如下。

TITLE“This is……”;程序标题
  ;程序说明
  LIST P="16F84",F=1NHX8M
  ;
  include
  -config_RC_Qsc &_WDT_0FF…
  ;资源定义和变量定义
  STATUS EQU 03
  FSR EQU 04
  PORTA EQU 05
  PORTB EQU 06
  J EQU 01F
  K EQU 01E
  ;…………………
      ORG 0000 ;
      goto MAIN ;跳过中断矢量
      ORG 0004
      goto INTSRV;子程序入口地址
  ;……………………………………
  MAIN   

     ;从0005H开始放主程序
      call Initports ;端口初始化
      call InitTimers;定时器初始化
       …
  INTSRV …     ;中断服务程序区
  SVBRTH…      ;子程序区
    END      ;程序结束符
  当然,在编写程序时可根据实际情况加以调整。下面是一份实际程序清单,要求将数据88H写入PIC16F84内部EEPROM的20H单元,而后再从20H单元将其读出。
  LIST P="16F84",F=INHX8M
  ;……………………………
  STATUS EQU  03  ;定义寄存器
  EEDATA EQU  08
  EEADR EQU  09
  INTCON EQU  0BH
  EECON1 EQU  88H
  EECON2 EQU  89H
  ;…………………………
  RD    EQU  0    ;定义位
  WR  EQU  1
  RP0   EQU  5
  GIE  EQU  7
  ;…………………………
        ORG  0
        GOTO WRSTART
  ;……………………………
       ORG  10H
  WRSTART         ;写入操作开始
       CLRW      ;清W,使W=0
       BCF STATUS,RP0 ;选BANK0
       MOVLW 20H
       MOVWF EEADR   ;地址→EEADR
       MOVLW 88H
       MOVWF EEDATA  ;写入数据→
                 ;EEDATA
       BSF STATUS,RP0 ;选BANK1
       BSF EECON1,2 ;写操作使能允许
       BCF INTCON,GIE ;关闭所有的中断
       MOVLW 0X55
       MOVWF EECON2  ;55H→EECON2
       MOVLW 0XAA
       MOVWF EECON2  ;AAH→EECON2
       BSF EECON1,WR ;启动写操作
       BSF INTCON,GIE ;恢复开中断
  RDSTART          ;读出操作开始
       BCF STATUS,RP0
       MOVLW 20H
       MOVWF EEADR   ;地址→EEADR
       BSF STATUS,RP0
       BSF EECON1,RD ;启动读操作
       BCF STATUS,RP0
       MOVF EEDATA,W ;将EEPROM
                 ;数据读入W
  END

关键字:PIC  单片机程序  基本格式 编辑:探路者 引用地址:PIC单片机程序设计的基本格式

上一篇:ADC时延和建立时间的区别
下一篇:如何选择和使用电源

推荐阅读最新更新时间:2023-10-17 15:14

PIC单片机软件编程技巧
项目是有关机器人控制的实现。控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。 1、 动作标志位的使用 在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序: list P=16c73 c
[单片机]
单片机矩阵键盘改良后的程序
学单片机的过程,我想应该是一个模仿跟自我创造的过程吧,程序不是越长越好,只要能够实现我们所要的要求,能够把程序写得简单易懂,易改又少占用内存空间,我想这应该是一个编程员所要追求的目标。最近喜欢用SWITCH CASE 编程序,所以感觉很多用到数码管的程序老会不自觉地往它那里想,今天费了那么长时间才编了一个好几十行的程序,想想应该有快一百行。但是,今晚却把程序改成这么简洁,真的对我启发不小啊。单片机的编程要实现同一个功能,有好多好多种编程的方法,以后尽量不要拘束于一些思维了,编程是要有想象力的,就像人家给你这么多菜,你要把这些菜怎么做得美味一样,就看你创造力了。改良我上次在51hei发表的:http://www.51hei.com/
[单片机]
80C51单片机模拟I2C总线的主机程序分享
I2C总线协议程序 在使用的过程中一定要注意时序、时间的问题。 i2c.c /* I2C.c 标准80C51单片机模拟I2C总线的主机程序 All rights reserved. */ #include “I2C.h” //定义延时变量,用于宏I2C_Delay() unsigned char data I2C_Delay_t; /* 宏定义:I2C_Delay() 功能:延时,模拟I2C总线专用 */ #define I2C_Delay() { I2C_Delay_t = (I2C_DELAY_VALUE); while ( --I2C_Delay_t != 0 ); } /* 函数:I2C_Init() 功能:I2C
[单片机]
80C51<font color='red'>单片机</font>模拟I2C总线的主机<font color='red'>程序</font>分享
单片机数字滤波程序
假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限副滤波 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value A ) || ( value - new_value A ) return value; return new_va
[单片机]
基于51单片机的红外智能风扇程序
实用STC12C5A60S2型号的单片机,实现三档风速,利用单片机内部定时器智能定时,可切换自然风和正常风,使用市场上常见的小遥控器。 电路原理图如下: 制作出来的实物图如下: 单片机源程序如下: #include STC12C5A60S2.H //头文件 #include stc_pwm.H /*==================================== 自定义类型名 ====================================*/ typedef unsigned char INT8U; typedef unsigned char uchar; typedef unsigned int I
[单片机]
基于51<font color='red'>单片机</font>的红外智能风扇<font color='red'>程序</font>
keil5安装及51单片机入门程序实例
1. keil5的安装 之前我在找的时候,一直以为官网不是很方便下载,在其他地方找,这过程很玛法,今天试了一下官网发现非常方便. 进入官网,点击Downloads 点击C51,以为我们是写51的单片机嘛,当然也可以下载其他的。 然后填写一下信息,非常方便的,而且很快,然后submit就ok了 在安装好了之后,需要我们破解,这里我们需要下载一个软件,在网上可以很方便地找到,这个很方便,就不啰嗦了。 现在打开keli5,点击project,创建新项目 7. 然后就是选择文件夹了,之后找到AT89C51即可 8. 然后点击添加文件 9. 之后就是选择文件类型,和定义文件名了 完了之后就可以开始写程序啦。
[单片机]
keil5安装及51<font color='red'>单片机</font>入门<font color='red'>程序</font>实例
51单片机串口通信软件程序
串口通信的单片机程序 beep bit p3.7 ;蜂鸣器定义 org 00h jmp main org 23h ;串行中断入口地址 jmp com_int ;串行中断服务程序 ;*********** 主程序开始 ******************* org 30h main: mov sp,#30h ;设置堆栈 lcall rest ;初始化 lcall comm ;串口初始化 jmp $
[单片机]
基于PIC单片机的LED点阵手写屏设计
概述 本文采用PIC 16F877A单片机为主要核心控制元件,设计了一个32×32 LED点阵模块的书写显示屏。它主要由光笔模块和点阵显示模块组成,光笔模块利用光敏电阻的光电特性,实现微亮检测功能。光笔反馈信号经放大器LM324比较后,送给单片机处理。32×32点阵显示模块、驱动模块由74HC595外设驱动阵列和8位串行输入/输出移位寄存器ULN2803A组成。光笔通过显示屏微亮扫描寻找坐标值,按键和LED指示灯可实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。 系统系统总体构成   本系统设计包括三大部分:PIC 16F877A单片机主控器、光笔控制器、点阵显示屏。系统的结构如
[安防电子]
基于<font color='red'>PIC</font><font color='red'>单片机</font>的LED点阵手写屏设计
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved