机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
HT48R50A的 AT24C02 IIC 示例程序
HT48R50A的 AT24C02 IIC 示例程序
 更新时间:2010-2-2 16:04:09  点击数:0
【字体: 字体颜色

; *************************************************
; Function :基于HT48R50A的 AT24C02 IIC 示例程序   *

; MicroProcessor : HT48R50A-1/28SKDIP-A           *

; Author:         www.picavr.com                  *
; Crystal :       4MHz                            *
; *************************************************
#INCLUDE                HT48R50A-1.INC
OK                      EQU     0CCH
ERROR                   EQU     0DDH
;--------------------------------------------------------------------
PUBLIC                  HT_DEVICE_ADD
PUBLIC                  HT_DATA
PUBLIC                  HT_DATA_ADD
;--------------------------------------------------------------------
EXTERN                  LCD_RESET:NEAR
EXTERN                  LCD_CURSOR:NEAR
EXTERN                  LCD_PUT_A_CHAR:NEAR
EXTERN                  DELAY_LONG:NEAR

EXTERN                  KEY_GET:NEAR
EXTERN                  KEY_IN_ADDRESS:NEAR
EXTERN                  KEY_IN_DATA:NEAR

EXTERN                  BYTE_WRITE:NEAR
EXTERN                  PAGE_WRITE:NEAR
EXTERN                  CURRENT_READ:NEAR
EXTERN                  RANDOM_READ:NEAR
EXTERN                  SEQUENTIAL_READ:NEAR

EXTERN                  MESSAGE_01:NEAR
EXTERN                  MESSAGE_02:NEAR
EXTERN                  MESSAGE_03:NEAR
EXTERN                  MESSAGE_04:NEAR
EXTERN                  MESSAGE_05:NEAR
EXTERN                  MESSAGE_06:NEAR
EXTERN                  MESSAGE_07:NEAR
EXTERN                  MESSAGE_08:NEAR
EXTERN                  MESSAGE_09:NEAR
EXTERN                  MESSAGE_10:NEAR
EXTERN                  MESSAGE_11:NEAR
EXTERN                  MESSAGE_12:NEAR
EXTERN                  MESSAGE_13:NEAR
EXTERN                  MESSAGE_14:NEAR
EXTERN                  MESSAGE_15:NEAR
EXTERN                  MESSAGE_16:NEAR
EXTERN                  MESSAGE_17:NEAR
EXTERN                  BIN_TO_HEX_TABLE:NEAR
EXTERN                  DEC_TO_HEX_TABLE:NEAR
EXTERN                  HEX_TO_TEXT_TABLE:NEAR
;--------------------------------------------------------------------
EXTERN                  KEY_DATA:BYTE
EXTERN                  KEY_IN_ADD_BUFFER:BYTE
EXTERN                  KEY_IN_DATA_BUFFER:BYTE
EXTERN                  SEQUENTIAL_READ_BUFFER:BYTE
;--------------------------------------------------------------------
DATA_9724               .SECTION        AT 60H          ’DATA’
HT_DEVICE_ADD           DB      ?
HT_DATA                 DB      ?
HT_DATA_ADD             DB      ?
COUNTER                 DB      ?
DATA_REGISTER           DB      ?
ADDRESS_REGISTER        DB      ?
SEQ_COUNTER             DB      ?
;--------------------------------------------------------------------
CODE                    .SECTION        AT 00H          ’CODE’
                        ORG     00H
                        JMP     START
START:
                        SET     PBC
                        SET     PB

                        CALL    LCD_RESET

                        CALL    MESSAGE_01
                        CALL    KEY_GET
;--------------------------------------------------------------------
SELECT_12:
                        CALL    MESSAGE_02
                        MOV     A,4FH
                        CALL    LCD_CURSOR
AGAIN_12:
                        CALL    KEY_GET
                        MOV     A,KEY_DATA
                        SUB     A,0DH
                        SZ      ACC
                        JMP     COMPARE_12_1
                        JMP     SELECT_34
COMPARE_12_1:
                        MOV     A,KEY_DATA
                        SUB     A,01H
                        SZ      ACC
                        JMP     COMPARE_12_2
                        JMP     FUNCTION_1
COMPARE_12_2:
                        MOV     A,KEY_DATA
                        SUB     A,02H
                        SZ      ACC
                        JMP     AGAIN_12
                        JMP     FUNCTION_2
                        RET
;--------------------------------------------------------------------
SELECT_34:
                        CALL    MESSAGE_03
                        MOV     A,4FH
                        CALL    LCD_CURSOR
AGAIN_34:
                        CALL    KEY_GET
                        MOV     A,KEY_DATA
                        SUB     A,0CH
                        SZ      ACC
                        JMP     COMPARE_34_D
                        JMP     SELECT_12
COMPARE_34_D:
                        MOV     A,KEY_DATA
                        SUB     A,0DH
                        SZ      ACC
                        JMP     COMPARE_34_3
                        JMP     SELECT_56
COMPARE_34_3:
                        MOV     A,KEY_DATA
                        SUB     A,03H
                        SZ      ACC
                        JMP     COMPARE_34_4
                        JMP     FUNCTION_3
COMPARE_34_4:
                        MOV     A,KEY_DATA
                        SUB     A,04H
                        SZ      ACC
                        JMP     AGAIN_34
                        JMP     FUNCTION_4
                        RET
;--------------------------------------------------------------------
SELECT_56:
                        CALL    MESSAGE_04
                        MOV     A,4FH
                        CALL    LCD_CURSOR
AGAIN_56:
                        CALL    KEY_GET
                        MOV     A,KEY_DATA
                        SUB     A,0CH
                        SZ      ACC
                        JMP     COMPARE_56_D
                        JMP     SELECT_34
COMPARE_56_D:
                        MOV     A,KEY_DATA
                        SUB     A,0DH
                        SZ      ACC
                        JMP     COMPARE_56_5
                        JMP     SELECT_7
COMPARE_56_5:
                        MOV     A,KEY_DATA
                        SUB     A,05H
                        SZ      ACC
                        JMP     COMPARE_56_6
                        JMP     FUNCTION_5
COMPARE_56_6:
                        MOV     A,KEY_DATA
                        SUB     A,06H
                        SZ      ACC
                        JMP     AGAIN_56
                        JMP     FUNCTION_6
                        RET
;--------------------------------------------------------------------
SELECT_7:
                        CALL    MESSAGE_05
                        MOV     A,4FH
                        CALL    LCD_CURSOR
AGAIN_7:
                        CALL    KEY_GET
                        MOV     A,KEY_DATA
                        SUB     A,0CH
                        SZ      ACC
                        JMP     COMPARE_7_7
                        JMP     SELECT_56
COMPARE_7_7:
                        MOV     A,KEY_DATA
                        SUB     A,07H
                        SZ      ACC
                        JMP     AGAIN_7
                        JMP     FUNCTION_7
                        RET
;--------------------------------------------------------------------
FUNCTION_1:
                        CALL    MESSAGE_08
                        MOV     A,4FH
                        CALL    LCD_CURSOR
F_1_AGAIN:
                        CALL    KEY_GET
                        MOV     A,KEY_DATA
                        SUB     A,01H
                        SZ      ACC
                        JMP     F_1_COMPARE_2
                        CALL    MESSAGE_09
                        SET     PC.4            ;WRITE PROTECT
                        CALL    KEY_GET         ;ENABLE
                        JMP     F_1_END
F_1_COMPARE_2:
                        MOV     A,KEY_DATA
                        SUB     A,02H
                        SZ      ACC
                        JMP     F_1_AGAIN
                        CALL    MESSAGE_10
                        CLR     PC.4            ;WRITE PROTECT
                        CALL    KEY_GET         ;DISABLE
F_1_END:
                        JMP     SELECT_12
                        RET
;--------------------------------------------------------------------
FUNCTION_2:
                        CALL    MESSAGE_06
                        MOV     A,41H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_ADDRESS
                        CALL    BIN_TO_HEX
                        SUB     A,OK
                        SZ      ACC
                        JMP     F_2_ERROR
                        CALL    MESSAGE_07
                        CALL    KEY_GET
                        JMP     F_2_END
F_2_ERROR:
                        CALL    MESSAGE_15
                        CALL    KEY_GET
F_2_END:
                        JMP     SELECT_12
                        RET
;--------------------------------------------------------------------
FUNCTION_3:
                        CALL    MESSAGE_11
                        MOV     A,41H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_ADDRESS
                        CALL    DEC_TO_HEX
                        SUB     A,OK
                        SZ      ACC
                        JMP     F_3_ERROR

                        CALL    MESSAGE_12
                        MOV     A,42H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_DATA
                        CALL    HEX_TO_HEX
                        CALL    BYTE_WRITE

                        CALL    MESSAGE_16
                        CALL    KEY_GET
                        JMP     F_3_END
F_3_ERROR:
                        CALL    MESSAGE_15
                        CALL    KEY_GET
F_3_END:
                        JMP     SELECT_34
                        RET
;--------------------------------------------------------------------
FUNCTION_4:
                        CALL    MESSAGE_11
                        MOV     A,41H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_ADDRESS
                        CALL    DEC_TO_HEX
                        SUB     A,OK
                        SZ      ACC
                        JMP     F_4_ERROR
                        CALL    MESSAGE_12
                        MOV     A,42H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_DATA
                        CALL    HEX_TO_HEX
                        CALL    PAGE_WRITE
                        CALL    MESSAGE_17
                        CALL    KEY_GET
                        JMP     F_4_END
F_4_ERROR:
                        CALL    MESSAGE_15
                        CALL    KEY_GET
F_4_END:
                        JMP     SELECT_34
                        RET
;--------------------------------------------------------------------
FUNCTION_5:
                        CALL    CURRENT_READ
                        CALL    MESSAGE_13
                        CALL    ADDRESS_DATA_DISPLAY
                        CALL    KEY_GET
                        JMP     SELECT_56
                        RET
;--------------------------------------------------------------------
FUNCTION_6:
                        CALL    MESSAGE_11
                        MOV     A,41H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_ADDRESS
                        CALL    DEC_TO_HEX
                        SUB     A,OK
                        SZ      ACC
                        JMP     F_6_ERROR
                        CALL    RANDOM_READ
                        CALL    MESSAGE_13
                        CALL    ADDRESS_DATA_DISPLAY
                        CALL    KEY_GET
                        JMP     F_6_END
F_6_ERROR:
                        CALL    MESSAGE_15
                        CALL    KEY_GET
F_6_END:
                        JMP     SELECT_56
                        RET
;--------------------------------------------------------------------
FUNCTION_7:
                        CALL    MESSAGE_11
                        MOV     A,41H
                        CALL    LCD_CURSOR
                        CALL    KEY_IN_ADDRESS
                        CALL    DEC_TO_HEX
                        SUB     A,OK
                        SZ      ACC
                        JMP     F_7_ERROR
                        CALL    SEQUENTIAL_READ
                        CALL    MESSAGE_13
                        CALL    SEQ_READ_BUFFER_DISPLAY
                        JMP     F_7_END
F_7_ERROR:
                        CALL    MESSAGE_15
                        CALL    KEY_GET
F_7_END:

                        JMP     SELECT_7
                        RET
;--------------------------------------------------------------------
BIN_TO_HEX              PROC
                        CLR     HT_DEVICE_ADD
                        MOV     A,OFFSET BIN_TO_HEX_TABLE + 2
                        MOV     TBLP,A
                        MOV     A,OFFSET KEY_IN_ADD_BUFFER + 2
                        MOV     MP0,A
                        MOV     A,03H
                        MOV     COUNTER,A
BIN_LOOP:
                        MOV     A,R0
                        SUB     A,01
                        SZ      ACC
                        JMP     BIN_BIT_X_0
                        TABRDL  ACC
                        ADDM    A,HT_DEVICE_ADD
                        JMP     BIN_NEXT
BIN_BIT_X_0:
                        MOV     A,R0
                &nbs, p;       SZ      ACC
                        JMP     BIN_ERROR
BIN_NEXT:
                        DEC     TBLP
                        DEC     MP0
                        SDZ     COUNTER
                        JMP     BIN_LOOP
                        MOV     A,OK
                        JMP     BIN_END
BIN_ERROR:
                        MOV     A,ERROR
BIN_END:
                        RET
BIN_TO_HEX              ENDP
;--------------------------------------------------------------------
DEC_TO_HEX              PROC
                        MOV     A,HT_DATA_ADD
                        MOV     ADDRESS_REGISTER,A
                        CLR     HT_DATA_ADD
                        MOV     A,OFFSET DEC_TO_HEX_TABLE
                        MOV     TBLP,A
                        MOV     A,OFFSET KEY_IN_ADD_BUFFER + 2
                        MOV     MP0,A
                        MOV     A,R0
                        ADDM    A,HT_DATA_ADD
                        DEC     MP0
                        MOV     A,R0
                        ADDM    A,TBLP
                        TABRDL  ACC
                        ADDM    A,HT_DATA_ADD
                        DEC     MP0
                        MOV     A,R0
                        SNZ     ACC.0
                        JMP     CHECK_ZERO
                        MOV     A,64H
                        ADDM    A,HT_DATA_ADD
                        JMP     CHECK_ERROR
CHECK_ZERO:
                        MOV     A,R0
                        SZ      ACC
                        JMP     DEC_TO_HEX_ERROR
                        JMP     DEC_TO_HEX_OK
CHECK_ERROR:
                        MOV     A,7FH
                        SUB     A,HT_DATA_ADD
                        SNZ     ACC.7
                        JMP     DEC_TO_HEX_OK
DEC_TO_HEX_ERROR:
                        MOV     A,ADDRESS_REGISTER
                        MOV     HT_DATA_ADD,A
                        MOV     A,ERROR
                        JMP     DEC_TO_HEX_END
DEC_TO_HEX_OK:
                        MOV     A,OK
DEC_TO_HEX_END:
                        RET
DEC_TO_HEX              ENDP
;--------------------------------------------------------------------
HEX_TO_HEX              PROC
                        CLR     HT_DATA
                        MOV     A,OFFSET KEY_IN_DATA_BUFFER + 1
                        MOV     MP0,A
                        MOV     A,R0
                        ADDM    A,HT_DATA
                        DEC     MP0
                        MOV     A,R0
                        SWAP    ACC
                        ADDM    A,HT_DATA
                        RET
HEX_TO_HEX              ENDP
;--------------------------------------------------------------------
ADDRESS_DATA_DISPLAY    PROC
                        MOV     A,OFFSET KEY_IN_ADD_BUFFER + 2
                        MOV     MP0,A
                        CLR     R0
                        DEC     MP0
                        CLR     R0
                        DEC     MP0
                        CLR     R0
                        MOV     A,HT_DATA_ADD
                        SZ      ACC
                        JMP     TRANSFER_BEGIN
                        JMP     ADDRESS_DISPLAY_BEGIN
TRANSFER_BEGIN:
                        MOV     A,HT_DATA_ADD
                        MOV     COUNTER,A
TRANSFER:
                        MOV     A,OFFSET KEY_IN_ADD_BUFFER + 2
                        MOV     MP0,A
                        MOV     A,R0
                        SUB     A,09H
                        SNZ     ACC.7
                        JMP     BYTE_1
                        INC     R0
                        JMP     TRANSFER_END
BYTE_1:
                        CLR     R0
                        DEC     MP0
                        MOV     A,R0
                        SUB     A,09H
                        SNZ     ACC.7
                        JMP     BYTE_2
                        INC     R0
                        JMP     TRANSFER_END
BYTE_2:
                        CLR     R0
                        DEC     MP0
                        INC     R0
TRANSFER_END:
                        SDZ     COUNTER
                        JMP     TRANSFER
ADDRESS_DISPLAY_BEGIN:
                        MOV     A,OFFSET KEY_IN_ADD_BUFFER
                        MOV     MP0,A
                        MOV     A,08H
                        CALL    LCD_CURSOR
                        MOV     A,7FH
                        DAA     ACC
                        MOV     A,03H
                        MOV     COUNTER,A
ADDRESS_DISPLAY:
                        MOV     A,OFFSET HEX_TO_TEXT_TABLE
                        MOV     TBLP,A
                        MOV     A,R0
                        ADDM    A,TBLP
                        TABRDL  ACC
                        CALL    LCD_PUT_A_CHAR
                        INC     MP0
                        SDZ     COUNTER
                        JMP     ADDRESS_DISPLAY

                        MOV     A,OFFSET KEY_IN_DATA_BUFFER + 1
                        MOV     MP0,A
                        MOV     A,HT_DATA
                        AND     A,0FH
                        MOV     R0,A
                        DEC     MP0
                        MOV     A,HT_DATA
                        SWAP    ACC
                        AND     A,0FH
                        MOV     R0,A

                        MOV     A,48H
                        CALL    LCD_CURSOR
                        MOV     A,02H
                        MOV     COUNTER,A
DATA_DISPLAY:
                        MOV     A,OFFSET HEX_TO_TEXT_TABLE
                        MOV     TBLP,A
                        MOV     A,R0
                        ADDM    A,TBLP
                        TABRDL  ACC
                        CALL    LCD_PUT_A_CHAR
                        INC     MP0
                        SDZ     COUNTER
                        JMP     DATA_DISPLAY
                        MOV     A,50H
                        CALL    LCD_CURSOR
                        RET
ADDRESS_DATA_DISPLAY    ENDP
;--------------------------------------------------------------------
SEQ_READ_BUFFER_DISPLAY PROC
                        MOV     A,HT_DATA
                        MOV     DATA_REGISTER,A
                        MOV     A,HT_DATA_ADD
                        MOV     ADDRESS_REGISTER,A

                        MOV     A,HT_DATA_ADD
                        SUB     A,07H
                        SNZ     ACC.7
                        JMP     SEQ_DATA_ADD_CHANGE
                        MOV     A,HT_DATA_ADD
                        ADD     A,80H
                        SUB     A,07H
                        MOV     HT_DATA_ADD,A
                        JMP     SEQ_DISPLAY_BEGIN
SEQ_DATA_ADD_CHANGE:
                        MOV     A,HT_DATA_ADD
                        SUB     A,07H
                        MOV     HT_DATA_ADD,A

SEQ_DISPLAY_BEGIN:
                        MOV     A,OFFSET SEQUENTIAL_READ_BUFFER
                        MOV     MP1,A
                        MOV     A,08H
                        MOV     SEQ_COUNTER,A
SEQ_LOOP:
                        MOV     A,40H
                        CALL    LCD_CURSOR
                        MOV     A,SEQ_COUNTER
                        ADD     A,30H
                        CALL    LCD_PUT_A_CHAR

                        MOV     A,R1
                        MOV     HT_DATA,A
                        CALL    ADDRESS_DATA_DISPLAY
                        INC     MP1
                        MOV     A,HT_DATA_ADD
                        SUB     A,7FH
                        SZ      ACC
                        JMP     SEQ_NOT_ZERO
                        CLR     HT_DATA_ADD
                        JMP     SEQ_END
SEQ_NOT_ZERO:
                        INC     HT_DATA_ADD
SEQ_END:
                        MOV     A,40H
                        CALL    LCD_CURSOR
                        CALL    KEY_GET
                        CALL    DELAY_LONG
                        SDZ     SEQ_COUNTER
                        JMP     SEQ_LOOP
                        MOV     A,DATA_REGISTER
                        MOV     HT_DATA,A
                        MOV     A,ADDRESS_REGISTER
                        MOV     HT_DATA_ADD,A
                        RET
SEQ_READ_BUFFER_DISPLAY ENDP
;--------------------------------------------------------------------
                        END


 

  • 上一篇: HT48R50A的 RS232串口示例程序
  • 下一篇: 没有了
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1