📄 gary control.asm
字号:
;--------------------------------------------------------------------------
;
;
;软件说明:
;此软件是V2.1版本2005-6-28
;
;功能描述:
;与主机配合,产生全灰度值
;固定地址,有测试模式
;--------------------------------------------------------------------------
;从机地址定义
CADDR EQU 0
;
;--------------------------------------------------------------------------
;变量定义表
;------------------------寄存器定义----------------------------------------
CONGADDR DATA 29H
DISPNUM DATA 24H
DISPBACK DATA 25H
WAITNUM DATA 26H
TEMP1 DATA 27H
TEMP2 DATA 28H
RGRAY EQU 38H
GGRAY EQU 39H
BGRAY EQU 3AH
FIRST EQU 3CH ;初始色
SECOND EQU 3DH ;终了色
;--------------------------------------------------------------------------
;------------------------标志位定义----------------------------------------
TB_FLG EQU 00 ;跳变花样显示标志,=1 显示;=0 不显示
JB_FLG EQU 01 ;渐变花样显示标志,=1 显示;=0 不显示
RESET_FLG EQU 02 ;复位命令标志, =1 复位;=0 不复位
HIGHB EQU 03
GRAYDAT EQU 22H ;输出数据位
REVSIC EQU 23H ;接收数据位
;---------------------------------------------------------------------------
;------------------------常量定义-------------------------------------------
;本机使用4800波特率,SMOD=1
BD_RATE EQU 0F3H ;2400 BOAD_RATE VALUE 12M
;SMOD=1时,4800 BOAD_RATE VALUE 12M
STACK EQU 6CH
;---------------------------------------------------------------------------
;------------------------地址常量定义---------------------------------------
;
;---------------------------------------------------------------------------
;------------------------引脚定义-------------------------------------------
TEST EQU P3.7 ;=1 正常 ,=0 测试
WDI EQU P3.5 ;喂狗
;P1口作为颜色输出
RPORT EQU P1.2
GPORT EQU P1.1
BPORT EQU P1.0
RRPORT EQU P1.6
GGPORT EQU P1.5
BBPORT EQU P1.4
;---------------------------------------------------------------------------
;------------------------以下为程序清单-------------------------------------
ORG 0000H
LJMP MAIN
ORG 000BH
AJMP INT_0
ORG 0023H
LJMP S_PORT
ORG 0030H
MAIN: MOV SP, #STACK
SETB TEST
CLR RS0
CLR RS1
CPL WDI
CLR A
MOV R0,#08H
CLEAR0: MOV @R0,A
INC R0
CJNE R0,#80H,CLEAR0
;判断是否为测试模式
;READADDR: JNB TEST,RUNSTART
; MOV P1,#44H
; CPL WDI
; ACALL DELAY2
; ACALL DELAY2
; ACALL DELAY2
; ACALL DELAY2
; MOV P1,#22H
; CPL WDI
; ACALL DELAY2
; ACALL DELAY2
; ACALL DELAY2
; ACALL DELAY2
; MOV P1,#11H
; CPL WDI
; ACALL DELAY2
; ACALL DELAY2
; ACALL DELAY2
; ACALL DELAY2
; AJMP READADDR
RUNSTART: MOV CONGADDR,#CADDR ;赋予地址
;##########################################################
MOV TL1,#BD_RATE ;T1 IS TIMER ,MAKE BARD_RATE
MOV TH1,#BD_RATE
MOV TL0,#0E0H
MOV TH0,#0E0H
MOV PCON,#10000000B ;SMOD=1
MOV TMOD,#00100010B
MOV TCON,#01000000B
MOV SCON,#11111000B
MOV IP,#00010000B
MOV IE,#10010010B
MOV P1,#0
MOV REVSIC,#0
MAINLOP:
CLR WDI
SETB WDI
CLR RESET_FLG
JB TB_FLG,TIAOBIAN
JNB JB_FLG,MAINLOP
CLR RESET_FLG ;清复位标志
CLR JB_FLG ;清渐变标志
ACALL GRAY
AJMP MAINLOP
TIAOBIAN: MOV P1,DISPNUM ;显示指定颜色
CLR TB_FLG
CLR RESET_FLG
AJMP MAINLOP
GRAY: MOV GRAYDAT,#77H
MOV A,BGRAY
JNZ NEXG1
CLR GRAYDAT.0
CLR GRAYDAT.4
NEXG1: MOV A,GGRAY
JNZ NEXG2
CLR GRAYDAT.1
CLR GRAYDAT.5
NEXG2: MOV A,RGRAY
JNZ NEXG3
CLR GRAYDAT.2
CLR GRAYDAT.6
NEXG3: SETB TR0
SETB RS1
MOV P1,GRAYDAT
MOV 10H,#0FFH
LOPGRAY: JB RESET_FLG,NEXTOUT
CPL WDI
AJMP LOPGRAY
NEXTOUT: CLR RS1
CLR TR0
RET
;------------------------以下为中断子程序清单-------------------------------------
;******************************************************************
;功能:S_PORT
;描述:串口的中断处理,接收主机发送过来的信息
;参数:无
;返回:无
;影响: DISPNUM,DISPBACK,WAITNUM
;******************************************************************
S_PORT: CPL WDI
PUSH ACC
PUSH PSW
CLR RI
MOV A,SBUF
COMMAD: CJNE A,CONGADDR,NEXTR ;退出
AJMP NEXTR1
NEXTR: CJNE A,#255,SEOUT
NEXTR1: CLR SM2
JNB RI,$
CLR RI
MOV A,SBUF
; MOV A,#0
MOV BGRAY,A
JNB RI,$
CLR RI
MOV A,SBUF
; MOV A,#255
MOV GGRAY,A
JNB RI,$
CLR RI
MOV A,SBUF
; MOV A,#0
MOV RGRAY,A
SETB JB_FLG ;渐变标志
SETB HIGHB
SETB RESET_FLG
AJMP SEOUT ;退出
SEOUT: SETB SM2
POP PSW
POP ACC
RETI
;------------------------以下为自定义子程序清单-------------------------------------
;******************************************************************
;功能:DELAY2
;描述:延时
;参数:无
;返回:无
;影响: 无
;******************************************************************
DELAY2: MOV TEMP1,#255
DEL42: MOV TEMP2,#255
NOP
DEL52: DEC TEMP2
MOV A,TEMP2
CJNE A,#00H,DEL52
DJNZ TEMP1,DEL42
RET
;******************************************************************
INT_0: INC R0
MOV A,R0
CJNE A,#0,NEXTINT0
MOV P1,GRAYDAT
NEXTINT0:CJNE A,RGRAY,NEXTINT1
CLR RPORT
CLR RRPORT
NEXTINT1:CJNE A,GGRAY,NEXTINT2
CLR GPORT
CLR GGPORT
NEXTINT2:CJNE A,BGRAY,EX_INT0
CLR BPORT
CLR BBPORT
EX_INT0: RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -