📄 text1.asm
字号:
;**************************************************************************
; HD7279A 测试演示程序
;
; 测试内容包括: 测试指令,复位指令,段寻址指令,下载数据且译码指令(2种),
; 下载数据且不译码指令,左/右移指令,循环左/右移指令,闪烁指令,消隐指令,
; 键盘输入测试
;**************************************************************************
; $ title (HD7279A 演示程序, AT89C2051 @ 12MHz)
; $ DB
;******************************************
; 变量定义
;******************************************
BIT_COUNT DATA 07fH
TIMER DATA 07eH
TIMER1 DATA 07dH
TEN DATA 7cH
DATA_IN DATA 20H
DATA_OUT DATA 21H
;******************************************
; 输入输出引脚定义
;******************************************
CS BIT P0.0 ;
CLK BIT P0.1 ;
DAT BIT P0.2 ;
KEY BIT P0.3 ;
ORG 000H
JMP START
ORG 100H
START:
MOV SP,#2fH
MOV P1,#11011011B
MOV TIMER,#50
START_DELAY:
MOV TIMER1,#255
START_DELAY1:
DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV DATA_OUT,#10100100B
CALL SEND
SETB CS
CLR P1.0
MAIN:
JB KEY,MAIN
CPL P1.0
MOV DATA_OUT,#00010101B
CALL SEND
CALL RECEIVE
SETB CS
WAIT:
JNB KEY,WAIT
JMP MAIN
;发送一个字节到7279
SEND:
MOV BIT_COUNT,#8
CLR CS
CALL LONG_DELAY
SEND_LOOP:
MOV C,DATA_OUT.7
MOV DAT,C
SETB CLK
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
CALL SHORT_DELAY
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,SEND_LOOP
CLR DAT
RET
;从7279读出一个字节
RECEIVE:
MOV BIT_COUNT,#8
SETB DAT
CALL LONG_DELAY
RECEIVE_LOOP:
SETB CLK
CALL SHORT_DELAY
MOV A,DATA_IN
RL A
MOV DATA_IN,A
MOV C,DAT
MOV DATA_IN.0,C
CLR CLK
CALL SHORT_DELAY
DJNZ BIT_COUNT,RECEIVE_LOOP
CLR DAT
RET
;延时子程序
LONG_DELAY:
MOV TIMER,#25
DELAY_LOOP:
DJNZ TIMER,DELAY_LOOP
RET
SHORT_DELAY:
MOV TIMER,#4
SHORT_LP:
DJNZ TIMER,SHORT_LP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -