一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3272|回复: 4
收起左侧

[其他综合] 会24C01读写操作了

[复制链接]
发表于 2011-4-8 12:02 | 显示全部楼层 |阅读模式
发段自己写的
;;;;24C01两字节读写实验;;;
;;;;12MHZ晶振;;;;;;;
;;;;1602 4线驱动;;;;
SDA24 EQU P0.1
SCLK24 EQU P0.0
E BIT P0.2
RS BIT P0.3
DB07 EQU P0
  ORG 0000H
  AJMP MAIN
  ORG 0080H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:mov sp,#60h
     ACALL ys45  ;lcd初始化
     acall ys45
     acall ys45
     acall ys45
     MOV a,#03H
     acall xzl
     ACALL YS45
     MOV a,#33H
     acall xzl
     MOV a,#02H
     acall xzl
     mov a,#101000b  ;4BIT ,2行显示
     acall xzl
     mov a,#01h  ;清屏
     acall xzl
     acall ys45
     mov a,#00000010b       ;光标复位
     acall xzl
     MOV A,#00000110B  ;地址增量1,字符不移动
     acall xzl
     mov a,#00001111b  ;显示开,光标有,光标闪
     acall xzl
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       MOV 31H,#0cH
       MOV 32H,#0fH
      
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;将32H,32H内容写入2401的00H,01H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
       ACALL STAR     
       MOV A,#0A0H
       ACALL WT
      
       MOV A,#00H
       ACALL WT
   
       MOV A,31H
       ACALL WT
   
       MOV A,32H
       ACALL WT
   
       ACALL STOP
       acall delay     ;这个延时很重要。刚开始没延时读老是出错
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
;;读2401 00H和01H内容并存入单片机33H,34H单元     
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      
       ACALL STAR    ;
       MOV A,#0A0H
       ACALL WT
   
       MOV A,#00H
       ACALL WT
   
       ACALL STAR
       MOV A,#0A1H ;
       ACALL WT
   
       acall rd24
       mov 33h,a
       acall xack
       acall rd24
       mov 34h,a
       acall stop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;在1602上显示33H和34H内容     
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
       MOV A,#80H    ;1602显示首址
       ACALL XZL
       MOV A,33H
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       ACALL XSJ
       MOV A,34H
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       ACALL XSJ
      
       AJMP $

TAB:   DB "0123456789ABCDEF"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;读2401子程序,出口A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RD24:  MOV R7,#8             ;8个位
       CLR A
      
       SETB SDA24    ;

RD000:SETB SCLK24
       MOV C,SDA24
       acall DELAY2
       CLR SCLK24
       RLC A
       DJNZ R7,RD000
       ret

      
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     ;开始条件
star: setb SDA24    ;时钟线高电平时,数据线由高到低跳变
      setb SCLK24
      acall DELAY2
      clr SDA24
      clr SCLK24
      ret
      
      
;;;;;;;;;;;;;;;;;;;;;;;;;
     ;停止条件
STOP: clr SDA24    ;时钟线高电平时,数据线由低到高跳变
      setb SCLK24
      acall DELAY2
      setb SDA24
      RET
      
;;;;;;;;;;;;;;;;;;;;;;;;
  ;;判断2401有无应答信号
;;;;;;;;;;;;;;;;;;;;;;;;;;
ACK:  setb sda24    ;设P0.0为输入
      setb SCLK24
      JB SDA24,$    ;判断2401有无应答信号
      clr SDA24
      clr SCLK24
      ret
      
;;;;;;;;;;;;;;;;;;;;;;;;;;;
XACK: clr  sda24    ;给2401一个应答信号
      setb sclk24
      acall DELAY2
      clr sclk24
      ret

;;;;;;;;;;;;;;;;;;;;;;;;;
;;写2401子程序,入口A
;;;;;;;;;;;;;;;;;;;;;;;;
WT:    mov r7,#8
       clr c
WT1:   rlc a
       mov SDA24,c
       SETB SCLK24
       acall DELAY2
       CLR SCLK24
       djnz r7,WT1
       acall ack
       ret
   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;1602写指令子程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        
xzl:mov 40h,a
    orl a,#0fh  ;初始化中用的写指令
    mov db07,a
    acall xzl0
    mov a,40h
    swap a
    orl a,#0fh
    mov db07,a
    acall xzl0
    MOV A,40H
    ret
xzl0:clr rs
    clr e
    acall delay
    setb e
    ret
   
;;;;;;;;;;;;;;;;;;;;;;;;
;;1602写数据子程序
;;;;;;;;;;;;;;;;;;;;;;;;
xsj:mov 40h,a    ;写数据
    orl a,#0fh
    mov db07,a
    acall xsj1
    mov a,40h
    swap a
    orl a,#0fh
    mov db07,a
    acall xsj1
    MOV A,40H
    ret
xsj1:setb rs
     clr e
    acall delay
     setb e
     ret
     

delay:mov r7,#100   ;延时1.3MS(延时太短的话1602初始化可能通不过)
d1:   mov r6,#10
      djnz r6,$
      djnz r7,d1
      ret

ys45:mov r7,#0bh    ;延时
ys1:  mov r6,#0cbh
      djnz r6,$
      djnz r7,ys1
      ret

DELAY2: NOP   ;延时
        NOP
        NOP
        NOP
        nop
        RET
        
        
        END

发表于 2011-4-8 12:04 | 显示全部楼层
汇编的啊看不来
 楼主| 发表于 2011-4-8 12:46 | 显示全部楼层
呵呵,只会一点点汇编,C一点都不懂
发表于 2011-4-9 11:55 | 显示全部楼层
我也只会一点汇编!
发表于 2011-4-10 08:06 | 显示全部楼层
    
     不错,帮顶!

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-19 04:10 , Processed in 0.048119 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表