|
发表于 2017-9-24 23:38:14
|
显示全部楼层
我很久不用汇编了,也没看5807手册.
看了您原文,似乎程序没有跑循坏.且编程首地址就是0000H,没有跳过中断向量,可能就是问题所在.
改2地方:
编程地址
ORG 000H
改为ORG 0100H
写完数据就死循环:
RET改为
LOOP: SJMP LOOP
另外增加上电延时
改写后如下:
SDA EQU P3.2 ;;
SCL EQU P3.3 ;;
ORG 100H ;跳转到100H开始编程
START:
mov p3, #0ffh ;2051 P3口P1口全置高
mov p1, #0ffh
setb SCL ;;5807 7脚
setb SDA ;;5807 8脚
lcall yanshi_350ms ;长延时,待上电稳定
lcall yanshi_350ms
lcall yanshi_350ms
MOV SP,#5fH
mov 50h, #11000000b ;工作于5767模式
mov 51h, #2dh ;;;;;;95mhz
mov 52h, #68h ;;;;;;95mhz
mov 53h, #00011000b;;
mov 54h, #00010000b;;
mov 55h, #00000000b;;
lcall I2C_WRITE ;调用I2C写入程序
SETB SCL
SETB SDA
;---------------------------------------------------------------------------------------
I2C_WRITE: ;;;I2C写入数据
;;
LCALL I2C_START ;发送开始信号
MOV A,50h ;50H送数;
LCALL I2C_SEND8BIT ;;;送八位数据
LCALL I2C_ACK ;;;发送接收确认信号
;=1,无确认,再次发送
MOV A,51h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
MOV A,52h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
MOV A,53h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
MOV A,54h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
MOV A,55h
LCALL I2C_SEND8BIT
LCALL I2C_ACK
LCALL I2C_STOP
RET
LOOP:SJMP LOOP ; //死循环
;-----------------------------------------------------
;======================================================= |
评分
-
1
查看全部评分
-
|