您当前的位置:五五电子网电子知识单片机-工控设备51单片机24c02开机计数器程序 正文
24c02开机计数器程序

24c02开机计数器程序

点击数:7481 次   录入时间:03-04 11:57:49   整理:http://www.55dianzi.com   51单片机
    SETB    TR0        ;开定时器0
    SETB    ET0        ;致能定时0中断
    CLR    TF0        ;清定时0中断标志
    SETB    EA        ;开总中断

     MOV     LedT0,#00H
     MOV     DPTR,#TABLE


;=============================================
SCAN:    

    ;按键扫描
    JB    P3.2,$
    LCALL    DELAY10MS    ;去抖动
    JNB    P3.2,KEY_RESET
    LJMP    SCAN
;=============================================
KEY_RESET:
     MOV     LED1,#00
     MOV     LED2,#00
     MOV     LED3,#00
     MOV     LED4,#00

    ;储存
    CALL    AT24C01_WRITE_ALL    
    ;检测按键是否放开
    JNB    P3.2,$
    JMP    SCAN

DELAY10MS: 
     MOV  R4,#20
DELAY10MSA:
     MOV  R5,#247
    DJNZ R5,$
    DJNZ R4,DELAY10MSA
RET

TABLE:
    DB    00101000B    ;0
    DB    11101011B    ;1
    DB    00110010B    ;2
    DB    10100010B    ;3
    DB    11100001B    ;4
    DB    10100100B    ;5
    DB    00100100B    ;6
    DB    11101010B    ;7
    DB    00100000B    ;8
    DB    10100000B    ;9
    DB    01100000B    ;A
    DB    00100101B    ;b
    DB    00111100B    ;C
    DB    00100011B    ;d
    DB    00110100B    ;E
    DB    01110100B    ;F
    DB    11110111B    ;-
    DB    11111111B    ;
;====================================================
;读出全部数据
AT24C01_READ_ALL:
     MOV     Address,#00H
    CALL    I2C_READ
     MOV     LED1,A        ;读出数据
     MOV     Address,#01H
    CALL    I2C_READ
     MOV     LED2,A        ;读出数据
     MOV     Address,#02H
    CALL    I2C_READ
     MOV     LED3,A        ;读出数据
     MOV     Address,#03H
    CALL    I2C_READ
     MOV     LED4,A        ;读出数据
RET
;====================================================
;写入全部数据
AT24C01_WRITE_ALL:
     MOV     Address,#00H
     MOV     A,LED1
     MOV     I2CData,A
    CALL    I2C_WRITE    ;写入数据
     MOV     Address,#01H
     MOV     A,LED2
     MOV     I2CData,A
    CALL    I2C_WRITE    ;写入数据
     MOV     Address,#02H
     MOV     A,LED3
     MOV     I2CData,A
    CALL    I2C_WRITE    ;写入数据
     MOV     Address,#03H
     MOV     A,LED4
     MOV     I2CData,A
    CALL    I2C_WRITE    ;写入数据
RET
;====================================================
;写一个字节    Address地址    I2CDatata写入的数据
;====================================================
I2C_WRITE:
    I2C_WRITE_A:
    LCALL    I2C_START
     MOV     A,#10100000B
    LCALL    I2C_SEND8BIT
    LCALL    I2C_ACK
    JC    I2C_WRITE_A    ;=1,表示无确认,再次发送
    
     MOV     A,Address
    LCALL    I2C_SEND8BIT
    LCALL    I2C_ACK    

     MOV     A,I2CData
    LCALL    I2C_SEND8BIT
    LCALL    I2C_ACK    
    LCALL    I2C_STOP
RET    



;====================================================
;读一个字节    Address地址    Data读出的数据
;====================================================

I2C_READ:
    I2C_READ_A:
    LCALL    I2C_START
     MOV     A,#10100000B
    LCALL    I2C_SEND8BIT
    LCALL    I2C_ACK
    JC    I2C_READ_A    ;=1,表示无确认,再次发送

上一页  [1] [2] [3]  下一页


本文关键字:程序  计数器  51单片机单片机-工控设备 - 51单片机