⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gary control.asm

📁 本程序使用STC单片机控制LED全彩灯具产生256级灰度
💻 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 + -