庞然大物游戏下载:谁能把汇编语言变为C语言啊?

来源:百度文库 编辑:高校问答 时间:2024/05/05 15:20:51
单片机7289作键盘显示电路的汇编程序,请大侠们帮忙啊
BIT_CNT DATA 30H
DELAY1 DATA 31H
DECIMAL DATA 32H
REC_BUF DATA 20H
SEND_BUF DATA 21H
DELAY DATA 22H
CS BIT P0.1
CLK BIT P0.2
DIO BIT P0.3
KEY BIT P0.4

ORG 0000H
AJMP RESET

ORG 0060H
RESET:

SETB CS
SETB KEY
SETB DIO
MOV DELAY,#25 ;延时
MOV DELAY1,#100
RST_DELAY1:

DJNZ DELAY1,RST_DELAY1
DJNZ DELAY,RST_DELAY1
MOV SEND_BUF,#10100100B ;初始化
CALL SEND
SETB CS
MAIN_LP:

JB KEY,MAIN_LP
MOV SEND_BUF,#00010101B ;有按键时,读键盘
CALL SEND
CALL RECEIVE ;
SETB CS
MOV B,#10 ;10进制转换
MOV A,REC_BUF
DIV AB
MOV DECIMAL,A
MOV SEND_BUF,#10100001B ;左移2次
CALL SEND
SETB CS
MOV SEND_BUF,#10100001B
CALL SEND
SETB CS
MOV SEND_BUF,#10000001B ;下载数据并译码
CALL SEND
MOV SEND_BUF,DECIMAL ;发送十位显示
CALL SEND
SETB CS
MOV SEND_BUF,#10000000B ;下载数据并译码
CALL SEND
MOV SEND_BUF,B ;发送个位显示
CALL SEND
SETB CS

MAIN_LP2:

JNB KEY,MAIN_LP2 ;等按键松开
AJMP MAIN_LP

;-----------------------------------------
;发送一个字节到zlg7289A,高位在前.
;-----------------------------------------
SEND:

MOV BIT_CNT,#8 ;发送8位
CLR CS
CALL LONG_DELAY ;延时50us

SEND_LP:
MOV A,SEND_BUF
RLC A
MOV SEND_BUF,A
MOV DIO,C
NOP
NOP
SETB CLK
CALL SHORT_DELAY ;延时10us
CLR CLK
CALL SHORT_DELAY ;延时10us
DJNZ BIT_CNT,SEND_LP
CLR DIO
RET
;-------------------------------------
;接受一个字节从zlg7289A,高位在前.
;-------------------------------------
RECEIVE:

MOV BIT_CNT,#8 ;发送8位
SETB DIO
CALL LONG_DELAY ;延时50us
RECEIVE_LP:

SETB CLK
CALL SHORT_DELAY ;延时10us
MOV C,DIO
MOV A,REC_BUF
RLC A
MOV REC_BUF,A
CLR CLK
CALL SHORT_DELAY ;延时10us
DJNZ BIT_CNT,RECEIVE_LP
CLR DIO
RET
LONG_DELAY:

MOV DELAY,#25
DJNZ DELAY,$
RET
SHORT_DELAY:

MOV DELAY,#5
DJNZ DELAY,$
RET

倒!7289不是单片机,而且单片机的汇编同pc的汇编也是不同的!

不知道单片机功能要从汇编到C比较困难

汇编直接搞定不行啊