📄 t7281a2.asm
字号:
$ title (BC728X Test Program, AT89C2051 @ 11.0592MHz)
$ DB
BIT_COUNT DATA 07FH
TIMER DATA 07EH
TIMER1 DATA 07DH
TEMP DATA 07CH
DATA_IN DATA 021H
DATA_OUT DATA 020H
CLK BIT P3.5 ;定义I/O口
DAT BIT P3.7 ;
KEY BIT P3.3 ;
ORG 000H
JMP START
;*************************************************************
;* 上电初始化
;*************************************************************
ORG 100H
START: MOV SP,#2FH ;设置堆栈
MOV TIMER,#50
START_DELAY: MOV TIMER1,#255 ;延时以确保BC728X完成复位
START_DELAY1: DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV DATA_OUT,#12H ;BC728X初始化
CALL SEND
MOV DATA_OUT,#80H ;设定为164模式, 不反相
CALL SEND
;*************************************************************
;* 主程序
;*************************************************************
MAIN: JB KEY,MAIN ;等待按键
MOV DATA_OUT,#93H ;读键值锁存器指令(地址13H)
CALL SEND
CALL RECEIVE ;读出数据
MOV DATA_OUT,#15H ;HEX译码指令
CALL SEND
MOV TEMP,DATA_IN
ANL TEMP,#0F0H ;键码高4位在第1位显示
MOV A,TEMP
SWAP A
ORL A,#10H
MOV DATA_OUT,A
CALL SEND
MOV DATA_OUT,#15H ;HEX译码指令
CALL SEND
MOV A,DATA_IN
ANL A,#0FH ;取键码的低4位
MOV DATA_OUT,A ;在第0位显示
CALL SEND
JMP MAIN
;***********************************************************
;* 向BC728X发送一个字节子程序,待发送数据存于DATA_OUT
;************************************************************
SEND: CLR CLK ;在CLK输出一脉冲
SETB CLK
WAIT1: JB DAT,WAIT1 ;等待DAT变为低电平
CLR CLK ;再输出一CLK脉冲
SETB CLK
WAIT2: JNB DAT,WAIT2 ;等待DAT恢复高电平(输入状态)
MOV BIT_COUNT,#8
SEND_LOOP: MOV C,DATA_OUT.7 ;输出BIT7
MOV DAT,C
CLR CLK ;输出一CLK脉冲
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A ;DATA_OUT左移一位
NOP ;短暂延时
NOP
NOP
DJNZ BIT_COUNT,SEND_LOOP
SETB DAT ;恢复DAT为高电平
RET
;*************************************************************
;* 从BC728X接收一个字节子程序,接收到的数据存于DATA_IN
;*************************************************************
RECEIVE: CLR CLK ;发出一CLK脉冲
SETB CLK
WAIT3: JB DAT,WAIT3 ;等待DAT低电平响应信号
CLR CLK ;再发出一CLK脉冲,准备接收数据
SETB CLK
MOV BIT_COUNT,#8
RECV_LOOP: NOP ;短暂延时
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV A,DATA_IN
MOV C,DAT ;读入一位
RLC A
MOV DATA_IN,A
CLR CLK ;发出CLK脉冲
SETB CLK
DJNZ BIT_COUNT,RECV_LOOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -