877A软件模拟SPI通信读写93C46

发布者:chwwdch最新更新时间:2017-12-10 来源: eefocus关键字:877A  软件模拟  SPI通信  读写93C46 手机看文章 扫描二维码
随时随地手机看文章

;功能说明:
;1.做一个灯的左移,将左移的8个码建于TABLE中.
;2.从TABLE中取出数据并以16位的方式存入93C46中,地址00H-03H.
;3.将93C46的00H-03H地址中的数据码取出并存入877A的RAM(30H)-(37H),并输出至877A的RC口.
;当断电再复电,数据码不会消失.
;4.本电路所使用93C46为ATMEL或MICROChip的,或不是该厂的,则烧写时间会有差异


;必须调整本程序的DELAY时间
;本实战的目的是让大家进上步熟悉SPI通信的时序,熟悉93C46的读写,会用软件模拟SPI通信
;硬件接法:
;1.93C46的CS接877A的RB1口;CLK接877A的RB2口;DI接877A的RB4口;DO接877A的RB5口;93C46的ORG端接VCC,使93C46工作于16位方式
;2.实验本实验须将MCD-DEMO实验板上的24CXX系列芯片先取下,在实验过程中不要按动同样接在RB口的按键,以免影响通信时序.
;3.实验板上拔码开关S1要置ON,其它拔码开关都可以关闭。
;PIC 单片机 学习网  陈学乾  http://www.pic16.com   讨论论坛:http://pic16.com/bbs/
;版权所有,转载请注明出处,并不能去掉或改变文件中的说明文字。
;程序文件名“MCD-93C46.ASM"
;程序清单如下:
;************************************
    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;
;************************************ 定义查表偏移量
READ   EQU   0  ;读93C46
WRITE  EQU   1  ;写入93C46 
EWEN   EQU   2  ;93C46写入使能
EWDS   EQU   3  ;93C46写入禁止
;*************************************定义引脚位地址
CS     EQU   1
CLK    EQU   2
DI     EQU   4
DO     EQU   5
;*********************
ADR46  EQU   20H
F1     EQU   23H
F2     EQU   24H
F3     EQU   25H
F4     EQU   26H
F5     EQU   27H
F6     EQU   28H
F7     EQU   29H
;**********************
  ORG 000H
  NOP              ;放置一条ICD必需的空操作指令
  GOTO MAIN
  ORG 0008H
;******************************************************
TABLE
  ADDWF PCL ,1   ;查表,PORTC一个灯左移
  RETLW  01H
  RETLW  02H
  RETLW  04H
  RETLW  08H
  RETLW  10H
  RETLW  20H
  RETLW  40H
  RETLW  80H
;*******************************************************
TO9346
  MOVWF F1        ;将W的值送F1暂存
  BSF  PORTB ,CS          ;写入起始位1
  BSF  PORTB ,DI
  BSF  PORTB ,CLK
  CALL DELAY
  BCF  PORTB ,CLK
  CALL DELAY
  MOVFW F1
  ADDWF PCL ,1
  GOTO  SREAD    ;读
  GOTO  SWRITE   ;写
  GOTO  SEWEN    ;写使能
  GOTO  SEWDS    ;写禁止
;*****************************************************
MAIN
  MOVLW  00H
  MOVWF  PORTC            ;LED先全部熄灭
  MOVLW  20H
  MOVWF  PORTB            ;除DO外,其它通信口全送0

  BSF STATUS,RP0          ;定义RA口,RC口全部为输出
  MOVLW 20H
  MOVWF TRISB             ;RB口5脚为入,其它全为出
  CLRW
  MOVWF TRISC             ;RC口全为输出.
  MOVWF OPTION_REG        ;开启RB口内部弱上拉
  BCF STATUS,RP0
;*************************************
LOOP
  CLRF    21H             ;取码指针
  CLRF    ADR46          ;93C46的地址00H
  MOVLW   04H
  MOVWF   22H             ;4组8个码
START
  MOVLW   EWEN            ;写入使能
  CALL    TO9346
  MOVFW   21H             ;载入取码指针
  CALL    TABLE           ;至TABLE 取码
  MOVWF   F5              ;存入"写入寄存器"
  INCF    21H ,1          ;取下一个码
  MOVFW   21H
  CALL    TABLE           ;至TABLE 取码
  MOVWF   F4
  MOVLW   WRITE           
  CALL    TO9346          ;写入数据
  MOVLW   EWDS
  CALL    TO9346          ;写禁止
  INCF    21H  ,1         ;取下一个码
  INCF    ADR46 ,1        ;取下一个地址
  CALL    DELAY1
  DECFSZ  22H ,1          ;直到写完四个地址
  GOTO    START
  MOVLW   30H             ;存入877A的RAM首地址
  MOVWF   FSR
  CLRF    ADR46           ;93C46的地址00
  MOVLW   04H
  MOVWF   22H             ;读93C46的四个地址,8个码
;*****************
A1
  MOVLW   READ
  CALL    TO9346          ;读地址中的数据
  MOVFW   F5
  MOVWF   INDF            ;读出的数据存入877A的RAM
  INCF    FSR ,1
  MOVFW   F4
  MOVWF   INDF
  INCF    ADR46 ,1         ;读下一个地址
  INCF    FSR ,1
  DECFSZ  22H ,1          ;直到读完四个地址
  GOTO    A1
A2
  MOVLW   08H
  MOVWF   22H
  MOVLW   30H             ;RAM 30h-37H 共8个码
  MOVWF   FSR
OUTPUT
  MOVFW   INDF
  MOVWF   PORTC           ;输出结果到PORTC
  CALL    DELAY1   
  INCF    FSR ,1
  DECFSZ  22H ,1
  GOTO    OUTPUT
  GOTO    A2
;***************************
SREAD
  MOVLW  80H
  ADDWF  ADR46 ,0        ;6位地址加上两位操作码,10XXXXXX  读指令
  CALL   SDT46           ;写入操作码与地址
  CALL   RDT46           ;读高位数据
  MOVWF  F5              ;存入F5
  CALL   RDT46           ;读低位地址              
  MOVWF  F4              ;存入F4
  GOTO   EX9346
;**************************
SWRITE
  MOVLW  40H
  ADDWF  ADR46 ,0       ;6位地址加上两位操作码01XXXXXX  写指令
  CALL   SDT46          ;写入操作码及地址
  MOVFW  F5             ;载入数据
  CALL   SDT46          ;写入数据
  MOVFW  F4             ;载入数据
  CALL   SDT46          ;写入数据
  GOTO   EX9346 
;******************************
SEWEN
  MOVLW  30H          ;写入操作码0011XXXX  写使能指令
  CALL   SDT46
  GOTO   EX9346
;******************************
SEWDS
  CLRW            ;写入0000XXXX写禁止指令
  CALL   SDT46
;******************************
EX9346
  BCF   PORTB ,CS    ;结束时清CS为0
  RETURN
;******************************
SDT46:
  MOVWF  F2          ;将要写的数据送F2
  MOVLW  08H         ;写入8位数据
  MOVWF  F3
SD1:
  RLF    F2 ,1
  BSF    PORTB ,DI
  BTFSS  STATUS ,C
  BCF    PORTB ,DI
  BSF    PORTB ,CLK
  CALL   DELAY
  BCF    PORTB ,CLK
  CALL   DELAY
  DECFSZ  F3 ,1
  GOTO    SD1
  RETURN
;******************************
RDT46
  MOVLW  08H         ;读出8位数据
  MOVWF  F3
RD1
  BSF  PORTB ,CLK
  CALL DELAY
  BCF  PORTB ,CLK
  CALL DELAY
  BSF  STATUS ,C
  BTFSS  PORTB ,DO
  BCF  STATUS ,C
  RLF  F2 ,1
  DECFSZ  F3 ,1
  GOTO  RD1
  MOVFW F2      ;读得的数据送W
  RETURN
;********************************
DELAY
  MOVLW  1FH     ;CLK时序廷时
  MOVWF  F7
  DECFSZ F7 ,1
  GOTO $-1
  RETURN
;*******************************
DELAY1              ;廷时
  MOVLW  .20
  MOVWF  F4
D1
  MOVLW  .40
  MOVWF  F5
D2
  MOVLW  .248
  MOVWF  F6
  DECFSZ F6 ,1
  GOTO  $-1
  DECFSZ F5 ,1
  GOTO   D2
  DECFSZ F4 ,1
  GOTO   D1
  RETURN
;********************************************
       end                   ;源程序结束
;*****************************************************


关键字:877A  软件模拟  SPI通信  读写93C46 引用地址:877A软件模拟SPI通信读写93C46

上一篇:pic16f877a对24c01的读写程序
下一篇:877A软件模拟I2C通信读写24C02

推荐阅读最新更新时间:2024-03-16 15:49

STM32 | 硬件SPI主从通信
例子说明及框图 本例子基于STM32F103ZET6芯片,实现SPI1与SPI2的主从通信。其中SPI1配置为主机,SPI2配置为从机,均配置为全双工模式。硬件连接图: 其中,我们需要注意的是,SPI的从机不能主动发送数据,只能应答数据。本例子的数据交互过程: 主机使用查询方式发送数据给从机。 从机使用中断接收方式接收数据,把接收到的数据加上0x05再发送给主机。 从机总是在收到主机的数据时,才会发送数据给从机。即从机被动发送数据,也即主机主动申请数据。 代码细节 主函数: int main(void) { uint8_t i = 0; //---------------------------
[单片机]
STM32 | 硬件<font color='red'>SPI</font>主从<font color='red'>通信</font>
BF561 SPORT口异步通信软件模拟
在各种DSP应用系统中,经常需要与其他的设备或系统进行数据通信,通用异步收发器UART(univetsal Asynchronous Receiver/Transmitter)是比较常用的一种通信模式。当应用系统要求多路UART,或者基于性能、成本综合考虑选用了不带UART的 DSP时,可以考虑利用原有的同步串行口,用软件模拟UART,在硬件上只需简单的连接便可构建UART,以实现系统的数据通信要求。   1 ADSP-BF561   ADSP— BF561处理器是ADI公司推出的针对多媒体和通信应用的一款高性能产品,具有丰富的外设接口,集成了2个Blackfln处理器内核。它内部集成了2 个并行外部接口(PPI
[嵌入式]
S3C2410与指纹传感器MBF200的SPI通信
  引 言   随着网络技术和通信技术的发展,传统的身份认证技术对于信息安全表现得越来越有些力不从心了。由于人的身体特征具有唯一性和稳定性,人们开始把目光转向了生物识别技术,如指纹、虹膜、DNA、掌形识别等。在众多的特征识别中,指纹采集设备由于具有体积小、功耗低、稳定性好、误判概率低等优点,而受到人们的青睐。指纹传感器是指纹采集设备中的核心器件,在此选用富士通公司的MBF200。它是一款先进的固态指纹传感器芯片,具有性能高、功耗低、成本低、接口方便等特点。这使得在嵌入式系统中实现数据的传输更加方便。S3C2410是三星公司推出的ARM920T核微处理器,主要面向手持设备以及高性价比、低功耗的应用,且在片上集成了丰富的组件,有利于其扩
[单片机]
S3C2410与指纹传感器MBF200的<font color='red'>SPI</font><font color='red'>通信</font>
模拟I²C总线多主通信研究与软件设计
      摘要 介绍模拟I2C总线的多主节点通信原理,并提出一种新的实现方法。这种采用延时接收比较来实现仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能够实现模拟I2C总线的多主通信,同时对I2C总线的推广起到了积极作用。       I2C总线(Inter IC BUS)是PHILIPS公司推出的双向两线串行通信标准。由于它具有接口少、通信效率高等优点,现已得到广泛的应用\\ 。它除了可以进行简单的单主节点通信外,还可以应用在多主节点的通信系统中。在多主节点通信系统中,如果两个或者更多的主节点同时启动数据传输,总线具有冲突检测和仲裁功能,保证通信正常进行并防止数据破坏。现在许多微控制器(MCU)都具有I2C总线接
[网络通信]
通过SPI接口协议实现DSP与其它设备的通信
摘要:介绍了SPI通信协议,给出了将TI公司生产的TMS320C5402 DSP用于SPI协议通信的串口配置方法和接口电路设计,同时给出了串口McBSP的配置程序。 关键词:多通道缓冲串行口 McBSP TMS320C5402 μPD780308 SPI DSP 1 引言 随着信息技术革命的深入和计算机技术的飞速发展,DSP技术也正以极快的速度被应用到科技和国民经济的各信领域。在很多工程开发设计中,由于要求实现单片DSP与单片DSP、多片DSP芯片以及及其它处理芯片之间的通信,因此,怎样更高效、 更便捷的实现这些通信,已成为广大DSP应用者首先要解决的一个问题。 本文根据笔者在工程应用和调试方面用TI的DSP TMS3
[应用]
适合工业应用的鲁棒SPI/I2C通信
Robust SPI/I2C Communications for Industrial Applications 适合工业应用的鲁棒SPI/I2C通信 评估和设计支持 电路评估板 CN0564参考设计板(EVAL-CN0564-ARDZ) 设计和集成文件 原理图、布局文件、物料清单 电路功能与优势 对于控制器和外设之间的短距离电路板内连接,串行外设接口(SPI)和Inter-Integrated Circuit (I2C)接口是流行的事实上的通信标准。由于存在广泛的硬件和软件支持,SPI和I2C已被传感器、执行器和数据转换器制造商广泛采用。当控制器和外设位于同一电路板上、共享同一接地层且相距
[电源管理]
适合工业应用的鲁棒<font color='red'>SPI</font>/I2C<font color='red'>通信</font>
PIC单片机软件模拟器PICSIM及其使用
我们知道单片机开发工具,一般都包括实时在线仿真器(Emulator)和烧写器(Programmer),其中在线仿真器是很好的工具,价格也较高。对于一些想节省开发成本的用户,也可以用软件模拟器(Simulator)来替代实时仿真器,因为其成本一般都很低。用软件模拟器和烧写器可组成一套低成本的开发系统,如针对Microchip著名的PIC单片机系列有PICKIT,即由软件模拟器PICSIM和烧写器PICPROG构。 (一)PIC单片机软件模拟器PICSIM功能特点 PICSIM即然称为软件模拟器,顾名思义即知它是一个纯软件,不需专门的仿真板,专门用于模拟调试PIC系列单片机的应用程序,具有如下功能特点: 1、工作平台:硬件PC机(2
[单片机]
PIC单片机<font color='red'>软件</font><font color='red'>模拟</font>器PICSIM及其使用
PIC读书笔记5:串行通信接口SPI、I2C、UART
1:同步串行接口I2C与SPI接线方式: 1.1: SPI的一些注意事项 2:同步串行接口I2C与SPI连接多个设备及其区别: 3:异步串行接口UART 当与windows终端通信时,硬件握手尤其必要,因为windows是一个多任务操作系统,应用程序有事会遇到导致数据丢失的长延时。 4:异步通信与同步串行通信外设比较
[单片机]
PIC读书笔记5:串行<font color='red'>通信</font>接口<font color='red'>SPI</font>、I2C、UART
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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