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

📄 c.asm

📁 汇编程序(cygnal c8051f021)
💻 ASM
字号:
$INCLUDE(C8051F020.INC)
BIT_COUNT DATA 07FH
TIMER     DATA 07EH
TIMER1    DATA 07DH
TEN       DATA 07CH
DATA_IN   DATA 020H
DATA_OUT  DATA 021H							
DIN  BIT  P1.1
LOAD BIT  P1.2
CLK BIT  P1.3
           ORG 0000H
					 JMP START
					 ORG 0100H
START:      
						mov   WDTCN, #0deh            ; disable watchdog timer
            mov   WDTCN, #0adh
            mov   OSCXCN, #67H            ; enable external crystal
                                          ; oscillator at 12MHz

           clr   A                       ; wait at least 1ms 
           djnz  acc,$                  ;  wait ~512us
           djnz  acc,$                  ;  wait ~512us

osc_wait:                                 ; poll for XTLVLD-->1
            mov   a, OSCXCN
           jnb   acc.7, osc_wait
            orl   OSCICN, #08h            ; select external oscillator as 
                                          ; system clock source
           orl   OSCXCN, #80h            ; enable missing clock detector
CP1INIT: 	mov CPT1CN, #080h	  ; Comparator 1 Control Register
         mov A, #010h                   
					djnz ACC, $                    
					anl CPT1CN, #not(30h)
          mov EIP1, #040h
					MOV TIMER,#50
;MOV XBR2,#044H
MOV XBR2,#40H  ;EMIFLE=1
MOV XBR1,#00000000B 
//MOV XBR0,04H
MOV P0MDOUT,#0FFH
MOV P1MDOUT,#0FFH
MOV P2MDOUT,#0FFH
MOV P3MDOUT,#0FFH
MOV P1MDIN,#0FFH
DELAY0:  MOV TIMER1,#255
DELAY1:  DJNZ TIMER1,DELAY1
         DJNZ TIMER,DELAY0
CODES:   MOV DATA_OUT,#09H
				 ACALL SEND
				 MOV DATA_OUT,#0FFH
				 ACALL SEND
         
				 
				 //DECODE MODE
				 
				 MOV DATA_OUT,#00001010B
				 ACALL SEND
				 MOV DATA_OUT,#7
				 ACALL SEND
				 //INTENSITY
				 
				 

				 MOV DATA_OUT,#00001011B
				 ACALL SEND
				 MOV DATA_OUT,#7
				 ACALL SEND
				 //SCAN LIMIT
		
				 MOV DATA_OUT,#00001100B
				 ACALL SEND
				 MOV DATA_OUT,#1
				 ACALL SEND
         //CLOSE

				 MOV DATA_OUT,#00001111B
				 ACALL SEND
				 MOV DATA_OUT,#00H
				 ACALL SEND
         //TEST
				 //ACALL DELAY1S
				 
				// MOV DATA_OUT,#01H
				// ACALL SEND
				// MOV DATA_OUT,#09H
				// ACALL SEND
				 ;ACALL DELAY1S
				//MOV R0,#010H
				//MOV R1,#00000000B
				// MOV DATA_OUT,#02H
				//ACALL SEND
				// MOV DATA_OUT,#00H
				 //ACALL SEND	

				
				AJMP EXIT
SEND:   MOV BIT_COUNT,#8         ;发送字符子程序
        CLR LOAD
SEND_LOOP:
									
					MOV C,DATA_OUT.7
          MOV DIN,C
					SETB CLK
					NOP
					NOP
					MOV A,DATA_OUT
          RL A
          MOV DATA_OUT,A
					CLR CLK
					NOP
					NOP
          DJNZ BIT_COUNT,SEND_LOOP
          
					
					;ACALL SHORT_DELAY
					
          RET
LONG_DELAY:  MOV TIMER,#255       ;延时约200US
DELAY_LOOP:  DJNZ TIMER,DELAY_LOOP
             RET
SHORT_DELAY: MOV TIMER,#23  ;延时约20US
SHORT_LP:    DJNZ TIMER,SHORT_LP
             RET
DELAY1S:	  MOV TIMER,#200          ;延时约1S 
DELAY10:    MOV TIMER1,#20
              
DELAY11:  	CLR A
						DJNZ ACC,$
						DJNZ ACC,$
							 
						DJNZ TIMER1,DELAY11
						DJNZ TIMER,DELAY10
            RET

EXIT:	JMP EXIT
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -