51单片机扩展24C02程序和电路.docx

上传人:b****5 文档编号:11881084 上传时间:2023-04-08 格式:DOCX 页数:12 大小:15.85KB
下载 相关 举报
51单片机扩展24C02程序和电路.docx_第1页
第1页 / 共12页
51单片机扩展24C02程序和电路.docx_第2页
第2页 / 共12页
51单片机扩展24C02程序和电路.docx_第3页
第3页 / 共12页
51单片机扩展24C02程序和电路.docx_第4页
第4页 / 共12页
51单片机扩展24C02程序和电路.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

51单片机扩展24C02程序和电路.docx

《51单片机扩展24C02程序和电路.docx》由会员分享,可在线阅读,更多相关《51单片机扩展24C02程序和电路.docx(12页珍藏版)》请在冰豆网上搜索。

51单片机扩展24C02程序和电路.docx

51单片机扩展24C02程序和电路

A

SDpF

C2

30

gR3

C3IDuFL^TBTF>

A1SCK

越SOA

U2*vP

74CQ4A

iDa>

it

U1

29

3I

rU.P/^LU

PD.VAD1

P02Z«E

XTALS

PO.XfiCti

P0.4/O4

PD.S//O5

FG.AMX

RST

PCLW07

F20/«

PE哄

P2:

2/A10

PSEN

P23/A11

ALE

P1.4/A12

EA

P2.5ZA13

P2WA14

F27/A15

P1.D

P3.CunRXD

F1.1

F3J/TXD

P1.2

Pi.iflrnD

PT-3

P3.3/1NT1

Pl-1

P34/ID

Pl.5

P3.S/TI

PT.e

P3.&WR

P17

P37JRD

41

27

3

ID

11

u

14

F

16

17

ATS9C51

SRCFiLM24O&4开机统计ASM

 

 

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitsda=P1A1;

sbitscl=P1A0;

uchartemp=0;

ucharstate;

constuchar

tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

voiddelayic(uinti)

{

ucharj;

while(i--)

{

for(j=0;j<120;j++);

}

}

voiddelaym(uchart)

{

uchari;

for(i=0;i

}

voidStart_I2c()

{

sda=1;

_nop_();

scl=1;

_nop_();

_nop_();

_nop_();

sda=0;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

scl=0;

_nop_();

_nop_();

}

voidStop_I2c()

sda=0;

_nop_();

scl=1;

_nop_();

_nop_();

_nop_();

sda=1;

_nop_();

_nop_();

_nop_();

_nop_();

}

voidcack(void)

sda=0;

_nop_();

_nop_();

_nop_();

scl=1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

scl=0;

}

voidmnack(void)

sda=1;

_nop_();

_nop_();

_nop_();

scl=1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

scl=0;

sda=0;

_nop_();

_nop_();

}

voidwrbyt(uchardate)

j=0x80;

for(i=0;i<8;i++)

if((date&j)==0)

sda=0;

scl=1;

delaym

(1);

scl=0;

}

else

sda=1;

scl=1;

delaym

(1);

scl=0;

sda=0;

}

j=j>>1;

}

}

uchara,c;

scl=0;

delaym

(1);

sda=1;

delaym

(1);

for(c=0;c<8;c++)

scl=1;

delaym

(1);

a=(a<<1)|sda;

scl=0;

delaym

(1);

}

returna;

}

voidread_data()

Start_I2c();

wrbyt(0xa0);

cack();

cack();

Start_I2c();

wrbyt(0xa1);

cack();

temp=rdbyt();

mnack();

Stop_I2c();

delayic(50);

}

voidwrite_data()

{

if(temp<=10)

{

state=temp;

state++;

Start_I2c();

wrbyt(0xa0);

cack();

wrbyt

(1);

cack();

Stop_I2c();

delayic(50);

else

temp=0;

state=temp;

Start_I2c();

wrbyt(0xa0);

cack();

wrbyt

(1);

cack();

wrbyt(state);

cack();

Stop_I2c();

delayic(50);

}

}

voiddispaly(ucharcount)

ucharnum;

num=count;

if(num>=5)

P2=0x00;

delayic(400);

}

data_l=num%10;

data_h=num/10;

P2=0x01;

P0=tab[data_h];

delayic(150);

P2=0x02;

P0=tab[data_l];

delayic(150);

}

voidmain()

{

read_data();

write_data();

while

(1)

{

dispaly(temp);

}

}

汇编程序:

;24c02的开机计数器,系统复位一次数码管加1

SDA24EQUP1.1

SCLK24EQUP1.0

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

CLRP3.7;打开写保护

MOVDPTR,#TAB

MOVA,#00H;读地址

LCALLRD24

CJNEA,#10,TT

TT:

JNCTT1

AJMPTT2

TT1:

MOVA,#00

TT2:

MOV30H,A

MOVCA,@A+DPTR

SETBP2.0;开数码管

MOVP0,A;送显示

MOVA,30H

INCA

MOVA,#00H

LCALLWT24

AJMP$

TAB:

DB28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H

RD24:

PUSHACC;读24C02子程序。

SETBSDA24

CLRSCLK24

CALLSTART24

MOVA,#0A0H

CALLSHIFT8

CALLACK

POPACC

CALLSHIFT8

CALLACK

CALLSTART24

MOVA,#0A1H

CALLSHIFT8

CALLACK

SETBSDA24

MOVR7,#8

CLRA

SETBSDA24

RD000:

RLA

SETBSCLK24

MOVC,SDA24

MOVACC.0,C

CLRSCLK24

DJNZR7,RD000

RET

;

;写入24C02程序:

WT24:

PUSHACC

SETBSDA24

CLRSCLK24

CALLSTART24

MOVA,#0A0H

CALLSHIFT8

CALLACK

POPACC

CALLSHIFT8

CALLACK

MOVA,B

CALLSHIFT8

CALLACK

CALLSTOP

CALLDELAY2

RET

;

;开始条件

START24:

CLRSDA24

SETBSDA24

SETBSCLK24

CLRSDA24

CLRSCLK24

RET

;停止条件

STOP:

CLRSDA24

SETBSCLK24

SETBSDA24

RET

;应答信号

ACK:

SETBSCLK24

CLRSCLK24

RET

;读、写数据

SHIFT8:

MOVR7,#8

SH01:

RLCA

MOVSDA24,C

SETBSCLK24

CLRSCLK24

DJNZR7,SH01

RET

DELAY2:

NOP

NOP

NOP

NOP

RET

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1