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

📄 fint.asm

📁 汇编程序(cygnal c8051f021)
💻 ASM
字号:
/////////////////////////////////// START /////////////////////////////////////
$INCLUDE(C8051F020.INC)

BIT_COUNT DATA 07FH
S1     DATA 07EH
S2    DATA 07DH
S3       DATA 07CH
S4 DATA  07BH
TIMER DATA 07AH
TIMER1 DATA 069H
DATA_IN   DATA 020H
DATA_OUT  DATA 021H

CLK BIT  P1.6
DAT BIT  P1.7

						 ORG 0000H
						 AJMP START
   					 ORG 0100H
START:      mov   WDTCN, #0deh            ; disable watchdog timer
            mov   WDTCN, #0adh
            mov   OSCXCN, #76h            ; enable external crystal
                                          ; oscillator at 22.1184MHz

            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          ;CPT1CN//          djnz ACC, $           ;CPT1CN wait at least 20us//          anl CPT1CN, #not(30h)
//          mov EIP1, #040h
//				  MOV TIMER,#50
//PORTINIT:mov XBR2, #044h
//         mov P0MDOUT, #001h
            
TIMEASSUME: mov XBR2,#040h
						MOV XBR0,#07H
						MOV XBR1,#02H
						MOV TMOD,#00010101B

DELAY0:  MOV TIMER1,#255
DELAY1:  DJNZ TIMER1,DELAY1
         DJNZ TIMER,DELAY0
				 ANL P5,#00H
				 MOV DATA_OUT,#10100100B
				 CALL SEND
				 MOV DATA_OUT,#0BFH
				 CALL SEND//TEST
				 CALL DELAY1S
				 CALL DELAY1SE
				 CALL DELAY1S
				 MOV DATA_OUT,#10100100B
				 CALL SEND//RESET
				 				 
TIME:		 MOV DATA_OUT,#11001000B
				 CALL SEND
				 MOV DATA_OUT,#00000000B
				 CALL SEND// 1
				 
				 MOV DATA_OUT,#11001001B
				 CALL SEND
				 MOV DATA_OUT,#00000000B
				 CALL SEND// 2

				 MOV DATA_OUT,#11001010B
				 CALL SEND
				 MOV DATA_OUT,#00000000B
				 CALL SEND// 3

				 MOV DATA_OUT,#11001011B
				 CALL SEND
				 MOV DATA_OUT,#00000000B
				 CALL SEND// 4

				 MOV DATA_OUT,#11001100B
				 CALL SEND
				 MOV DATA_OUT,#00000000B
         CALL SEND// 5
				 
				 MOV DATA_OUT,#11001101B
				 CALL SEND
				 MOV DATA_OUT,#00000000B
				 CALL SEND// 6
         
				 CALL DELAY1S
         MOV DATA_OUT,#10100100B
				 CALL SEND//RESET
                 

CS1: 		 MOV R7,#00H
CS2:		 MOV DATA_OUT,#11001101B
				 ACALL SEND
				 MOV DATA_OUT,R7
				 ACALL SEND// 6
CS3:		 MOV R6,#00H
CS4:		 MOV DATA_OUT,#11001100B
				 ACALL SEND
				 MOV DATA_OUT,R6
				 ACALL SEND// 5
CS5: 		 MOV R5,#00H		 
CS6:		 MOV DATA_OUT,#11001011B
				 ACALL SEND
				 MOV DATA_OUT,R5
				 ACALL SEND// 4
CS7:		 MOV R4,#00H				 
CS8:		 MOV DATA_OUT,#11001010B
				 ACALL SEND
				 MOV DATA_OUT,R4
				 ACALL SEND// 3
CS9:		 MOV R3,#00H
CS10:		 MOV DATA_OUT,#11001001B
				 ACALL SEND
				 MOV DATA_OUT,R3
				 ACALL SEND// 2
CS11:		 MOV R2,#00H
CS12:    MOV DATA_OUT,#11001000B
				 ACALL SEND
				 MOV DATA_OUT,R2
				 ACALL SEND// 1
				 CALL COUNT 
				 INC R2
				 CJNE R2,#0AH,CS12
				 INC R3
				 CJNE R3,#0AH,CS10
				 INC R4
				 CJNE R4,#0AH,CS8
				 INC R5
				 CJNE R5,#0AH,CS6
				 INC R6
				 CJNE R6,#0AH,CS4
				 INC R7
				 CJNE R7,#0AH,CS2

         MOV DATA_OUT,#10001000B
				 ACALL SEND
				 MOV DATA_OUT,#00H
				 ACALL SEND// shan 
				 JMP EXIT

DELAY1S: MOV R0,00H         //delay
XX:   	 MOV A,00H
				 DJNZ ACC,$
      	 MOV A,00H
				 DJNZ ACC,$
				 MOV A,00H
				 DJNZ ACC,$	
				 MOV A,00H
				 DJNZ ACC,$	
				 DJNZ R0,XX
				 RET

COUNT:	 MOV TH0,#0FFH          //COUNTING
				 MOV TL0,#0FFH
				 SETB TR0
LOOP1:   JBC TF0,LOOP2
				 SJMP LOOP1
LOOP2:   CLR TR0
				 RET

SEND: MOV BIT_COUNT,#8         ;发送字符子程序
      ANL P5,#00H
      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

LONG_DELAY:  MOV TIMER,#250         ;延时约200US
DELAY_LOOP:  DJNZ TIMER,DELAY_LOOP
             RET
SHORT_DELAY: MOV TIMER,#100         ;延时约20US
SHORT_LP:    DJNZ TIMER,SHORT_LP
             RET
DELAY1SE:		MOV R1,#108
DELAYS:			MOV R0,#10
SS:			    CLR A
						DJNZ ACC,$
						DJNZ ACC,$
						DJNZ R0,SS
						DJNZ R1,DELAYS
						RET


EXIT:  AJMP EXIT
			 RET
			 END
///////////////////////////////////////// END /////////////////////////////////////////

TI2:		 MOV R6,#00H
TIM2:    MOV R5,#00H
TIME2:	 MOV DATA_OUT,#10000011B
				 CALL SEND
				 MOV DATA_OUT,R5
				 CALL SEND// 4

				 MOV DATA_OUT,#10000100B
				 CALL SEND
				 MOV DATA_OUT,R6
         CALL SEND// 5
TI1:   	 MOV R4,#00H
TIM1:		 MOV R3,#00H
TIME1:	 MOV DATA_OUT,#11001000B
				 CALL SEND
				 MOV DATA_OUT,R3
				 CALL SEND// 1位
				 
				 MOV DATA_OUT,#11001001B
				 CALL SEND
				 MOV DATA_OUT,R4
				 CALL SEND// 2位
				 
				 CALL DELAY1S
         INC R3
				 CJNE R3,#0AH,TIME1
				 INC R4
				 CJNE R4,#06H,TIM1
				 INC R5
				 CJNE R5,#0AH,TIME2
				 INC R6
				 CJNE R6,#06H,TIM2
  					// 00-00  -- 59-59
   			 CALL DELAY1S
				 CALL DELAY1SE//DELAY

				 MOV DATA_OUT,#10100100B
				 CALL SEND

TIMED:	 MOV DATA_OUT,#10000000B
				 CALL SEND
				 MOV DATA_OUT,#00001010B
				 CALL SEND// 1 '-'
				 
				 MOV DATA_OUT,#10000001B
				 CALL SEND
				 MOV DATA_OUT,#0BH
				 CALL SEND// 2 'E'

				 MOV DATA_OUT,#11001010B
				 CALL SEND
				 MOV DATA_OUT,#04H
				 CALL SEND// 3 'Y'

				 MOV DATA_OUT,#11001011B
				 CALL SEND
				 MOV DATA_OUT,#0BH
				 CALL SEND// 4 'b'

				 MOV DATA_OUT,#10000100B
				 CALL SEND
				 MOV DATA_OUT,#0AH
         CALL SEND// 5 '-'
				 
				 MOV DATA_OUT,#10000101B
				 CALL SEND
				 MOV DATA_OUT,#0AH
         CALL SEND// 5 '-'

				 CALL DELAY1S
				 
				 MOV DATA_OUT,#10001000B
				 CALL SEND
				 MOV DATA_OUT,#11110001B
				 CALL SEND//SHAN
				 
				 CALL DELAY1S
				 CALL DELAY1S

				 MOV DATA_OUT,#10100100B
				 CALL SEND//RESET

⌨️ 快捷键说明

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