PIC单片机对9346EEPROM程序的读写设计

发布者:星光小狐狸最新更新时间:2019-12-31 来源: elecfans关键字:PIC单片机  9346EEPROM  读写设计 手机看文章 扫描二维码
随时随地手机看文章

由于在使用时,找了很久也没找到相关的程序,因此把自己后来编写的程序贴出来,希望能给后来者借鉴参考!;实验目的:熟悉SPI总线以及9346EEPROM的读写


;RBO键按下时把DATA和DATA2写入到EEPROM中以EE—ADDR为地址的单元内,

;完成后,单个数码观显示“9”做为完成标志

;RB1键按下时,读取EEPROM中以EE—ADDR为地址的单元,并送数码管显示

;硬件要求:S3、S5、S6拨码管置ON,S1第7、8位置ON。

PIC单片机对9346EEPROM程序的读写设计

LIST P=16F877A, R=DEC

include “P16F877A.inc” ;包含头文件

__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC

#DEFINE CS PORTC,2 ;片选信号

#DEFINE CLK PORTC,3 ;时钟信号输入

#DEFINE DI PORTC,5 ;数据输入脚

#DEFINE D0 PORTC,4 ;数据输出脚EE_ADDR EQU 05H ;待写EEPROM单元地址EE_DATA EQU 56H ;待写入的数据

EE_DATA2 EQU 78HTEMP1 EQU 30H ;读EEPROM结果存放单元

TEMP2 EQU 31H

DL1 EQU 77H ;延时用

DL2 EQU 78H ;延时用

;******************************************************

ORG 000H ;复位地址

NOP ;放置一条ICD必需的空操作指令

GOTO MAIN

ORG 0008H

TABLE

ADDWF PCL,1 ;PC值加上偏移地址

RETLW 0C0H ;0

RETLW 0F9H ;1的编码

RETLW 0A4H ;2的编码

RETLW 0B0H ;3的编码

RETLW 99H ;4的编码

RETLW 92H ;5的编码

RETLW 082H ;6

RETLW 0F8H ;7

RETLW 080H ;8

RETLW 090H ;9

RETLW 88H ;A

RETLW 083H ;b

RETLW 0C6H ;c

RETLW 0A1H ;d

RETLW 086H ;E

RETLW 08EH ;F

RETLW 0FFH

;********************主程序***************************

MAIN

MOVLW 0FFH

MOVWF PORTD

CLRF TEMP1

BANKSEL SSPSTAT

MOVLW b‘10000000’

MOVWF SSPSTAT ;SMP=1,CKE=0

MOVLW B‘11010000’

MOVWF TRISC ;D0输入,DI输出,CLK输出

MOVLW 0FFH

MOVWF TRISB

CLRF TRISD

CLRF TRISA

MOVLW 06H

MOVWF ADCON1

CLRF STATUS

CLRF INTCON ;清除所有中断使能位

CLRF PIR1 ;清除SSP中断标志位

BCF CS ;片选禁止

MOVLW B‘00110001’

MOVWF SSPCON ;CKP=1,SSPEN=1,SPI主模式Fosc/16LOOP

CLRF STATUS

BTFSC PORTB,0

GOTO EE_READ

CALL WRITE_EE

MOVLW 90H

MOVWF PORTD

MOVLW 0FEH

MOVWF PORTA

GOTO $

EE_READ

BTFSC PORTB,1

GOTO MAIN

CALL READ_EE

CALL DISPLAY

GOTO $-1

;**********************写使能*********************************

WRITE_EE

BSF CS ;片选使能

MOVLW B‘00000001’ ;发送起始位

; MOVLW

CALL SPI_COMM ;发送

MOVLW B‘00110000’ ;写使能命令代码

CALL SPI_COMM ;发送

BCF CS ;片选禁止

NOP

NOP ;延时一定时间;*********************写数据**********************************

;入口参数:EE_ADDR,EE_DATA,EE_DATA2

;出口参数:无

;*************************************************************

BSF CS ;片选使能

MOVLW B‘00000001’ ;发送起始位

CALL SPI_COMM ;发送

MOVLW EE_ADDR ;发送待写单元的地址

IORLW B‘01000000’ ;地址加上写命令代码

CALL SPI_COMM

MOVLW EE_DATA ;发送待写入的数据

CALL SPI_COMM

MOVLW EE_DATA2

CALL SPI_COMM ;再次发送8位数据,组成16位数据

BCF CS ;片选禁止

NOP

NOP

NOP ;延时一定时间

BSF CS ;片选使能

NOP

NOP

BTFSS D0 ;判断内部写操作是否完成

GOTO $-1 ;正在操作,等待完成

BCF CS ;片选禁止

NOP

NOP ;延时一定时间

RETURN;*********************读数据***********************************

;入口参数:EE_ADDR

;出口参数:TEMP1,TEMP2

;**************************************************************

READ_EE

BSF CS ;片选使能

NOP

NOP ;延时一定时间

MOVLW B‘00000001’ ;发送起始位

CALL SPI_COMM

MOVLW EE_ADDR ;发送待读单元地址

IORLW B‘10000000’ ;地址加上读命令代码

CALL SPI_COMM

MOVLW 00H

CALL SPI_COMM ;读取EEPROM中指定单元高8位数据

MOVWF TEMP1 ;保存到结果存放单元

MOVLW 00H

CALL SPI_COMM ;读取EEPROM中指定单元低8位数据

MOVWF TEMP2

NOP

BCF CS ;片选禁止

NOP

NOP

MOVLW 0FH

ANDWF TEMP1,0

MOVWF 61H

SWAPF TEMP1,0

ANDLW 0FH

MOVWF 60H

MOVLW 0FH

ANDWF TEMP2,0

MOVWF 63H

SWAPF TEMP2,0

ANDLW 0FH

MOVWF 62H

RETURN

;*****************发送命令/数据和读取数据子程序*************

SPI_COMM

MOVWF SSPBUF ;SSPBUF中写入数据,启动发送接收过程

BTFSS PIR1,SSPIF ;判断是否发送/接收完成

GOTO $-1 ;等待完成

BCF PIR1,SSPIF ;清除中断标志位

MOVF SSPBUF,W ;清空SSPBUF,以便下一次通信

RETURN ;子程序返回;**********************延时程序******************************

DELAY10MS

MOVLW 0CH

MOVWF DL1

DELAY2

MOVLW 0FFH

MOVWF DL2

DELAY1

DECFSZ DL2,1

GOTO DELAY1

DECFSZ DL1,1

GOTO DELAY2

RETURN

;**********************显示程序******************************

;入口参数:60H-63H

;无

;***********************************************************DISPLAY

MOVFW 60H

CALL TABLE

MOVWF PORTD

BCF PORTA,0

CALL DELAY10MS

BSF PORTA,0 MOVFW 61H

CALL TABLE

MOVWF PORTD

BCF PORTA,1

CALL DELAY10MS

BSF PORTA,1 MOVFW 62H

CALL TABLE

MOVWF PORTD

BCF PORTA,2

CALL DELAY10MS

BSF PORTA,2 MOVFW 63H

CALL TABLE

MOVWF PORTD

BCF PORTA,3

CALL DELAY10MS

BSF PORTA,3

RETURN;********************************************

end ;源程序结束

关键字:PIC单片机  9346EEPROM  读写设计 引用地址:PIC单片机对9346EEPROM程序的读写设计

上一篇:PIC单片机对复费率电能表时钟误差分析仪系统的设计
下一篇:PIC系列单片机的应用优势是什么

推荐阅读最新更新时间:2024-11-06 11:34

基于UCC3895与PIC单片机的智能充电器
l 与温度无关的基准 与温度无关的电压或电流基准在许多模拟电路中是必不可少的。如何产生一个对温度变化保持恒定的量?假设有正温度系数的电压V1和负温度系数的电压V2,这两个量以适当的权重相加,那么结果就会显示出零温度系数。选取a和b使得aV1/ T+bv2/ T=0,可以得到具有零温度系数的电压基准,VREF=aV1+bV2。 上述假设提供了一个可行的方法实现与温度无关的电压基准,就是分别找到正温度系数的电压和负温度系数的电压。 1.1 负温度系数电压 双极晶体管的基极一发射极电压VBE或者pn结二极管的正向电压,具有负温度系数。根据已推导的VBE温度系数表达式 : 式(1)给出了在给定温度T下VBE的温度
[电源管理]
基于FPGA的DDR3多端口读写存储管理系统设计
机载视频图形显示系统主要实现2D图形的绘制,构成各种飞行参数画面,同时叠加实时的外景视频。由于FPGA具有强大逻辑资源、丰富IP核等优点,基于FPGA的嵌入式系统架构是机载视频图形显示系统理想的架构选择。视频处理和图形生成需要存储海量数据,FPGA内部的存储资源无法满足存储需求,因此需要配置外部存储器。 与DDR2 SDRAM相比,DDR3 SDRAM带宽更好高、传输速率更快且更省电,能够满足吞吐量大、功耗低的需求,因此选择DDR3 SDRAM作为机载视频图形显示系统的外部存储器。 本文以Kintex-7系列XC7K410T FPGA芯片和两片MT41J128M16 DDR3 SDRAM芯片为硬件平台,设计并实现了基于FPGA
[电源管理]
基于FPGA的DDR3多端口<font color='red'>读写</font>存储管理系统<font color='red'>设计</font>
RFID 读写器的设计
   0 引 言       射频识别(Radio Frequency Identification,RFID)是利用感应、电磁场或电磁波为传输手段,完成非接触式双向通信,获取相关数据的一种自动识别技术。射频识别卡最大的优点就在于非接触,因此完成识别工作时无须人工干预,适于实现自动化且不易损坏,可识别高速运动物体并可同时识别多个射频卡,操作快捷方便。目前,射频识别技术己经广泛使用,准备接替目前许多人工完成的工作程序。      RFID 技术是一个崭新的技术应用领域,它不仅涵盖了射频技术,还包含了射频技术、密码学、通信原理和半导体集成电路技术,是一个多学科综合的新兴学科。因此,对 RFID 技术的认识和研究具有深远的理论意义。随着
[网络通信]
PIC单片机RS232串口通信程序(USART)
//★★★★★★★★★PIC单片机USART的应用(串口通信)★★★★★★★★★★★\\ //单征机型号:PIC16F877A //功能描述:PIC单片机USART的应用,串口调试助手发送数据给877,877收到后再转发回串口助手 //通过 串口调试助手 协助工作 #include pic.h //包含单片机内部资源预定义 __CONFIG(0xf73a); //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡 //======================================================================== //功能描述:
[单片机]
基于PIC单片机的小型空气压缩机控制装置
1 前 言   美国Microchip公司的PIC16系列单片机是一种新型的CMOS工艺的8位单片机。因其功耗低,超小型,低成本,功能完整,因而是一种非常适合在各种便携式设备中使用的高性价比的单片机,并已经得到了越来越广泛的应用。 笔者开发的小型空气压缩机采用直流电磁铁驱动机构作为驱动源,它具有体积小(35 mm×26 mm×75mm)、重量轻(94 g)、动作频率高(6 480次/min)和流量脉动小等特点,可内藏于机器人的腕部实现对手指关节的直接驱动。以PIC16F873单片机为核心构成该小型空气压缩机的控制装置,研制出了价廉、小巧和具有良好控制性能的控制装置,文中介绍了该控制装置的硬件电路、程序框图和工作原理。
[单片机]
基于<font color='red'>PIC单片机</font>的小型空气压缩机控制装置
PIC单片机AD转换LED显示程序
;* 单片机 模拟量进行模/数转换,并用 LED 显示出来我们可以看到转换 ;* 结果,0位AD当做8位来用了,利用 单片机 片内硬件资源TMR0和预 分频器 , ;* 为ADC提供定时启动信号, A/D 转换的时钟源选用了系统 周期 的8倍,选 ;* 用了 电源 电压 VDD和VSS作为基准电压,软件方式查询其中断标志位ADIF. ;************************************************************ LIST P=16F877 ;列表伪指令 INCLUDE P16F877.INC ;把包含文件含入源程序 ;******
[单片机]
基于ARM的双频RFID读写系统设计
      摘要:本文设计了能对低频和高频RFID 卡进行操作的双频RFID 读写系统。系统基于ARM微处理器 S3C44B0X ,利用S3C44B0X 的内部接口实现与RFID 模块和其它外设的连接,简化了硬件。软件设计中,通过对ARM 嵌入式系统的编程实现对RFID 卡的读写、显示以及数据的存储、查询等功能。系统还可通过USB 接口与上位机(PC)连接,使用方便灵活。    1 引言   RFID(Radio Frequency Identification Technology ,无线射频识别技术)由于具有高速移动物体识别、多目标识别和非接触识别等特点,显示出巨大的发展潜力和应用空间,被认为是21 世纪最有发展
[网络通信]
PIC单片机学习心得
1.前言 为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评,提出宝贵的意见. 2.PIC单片机的概述 PIC16F616是一款14引脚、8位的CMOS单片机.采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率. PIC16F616 这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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