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

📄 temperature.asm

📁 C8051F310系统自带的温度传感器的一个学习程序,ADC成10位.然后发送到PC机上.
💻 ASM
字号:

$INCLUDE(C8051F310.INC)	; Register definition file.

    ORG 00H
    LJMP Configure

    ORG 00FFH
Configure:
    MOV OSCICN,#83H   
		MOV OSCXCN,#00H
		MOV CLKSEL,#00H

    MOV XBR0,#01H
		MOV XBR1,#0C0H
		
		MOV PCA0MD,#00H    //禁止看门狗
		MOV PCA0CN,#00H
 ANL   	PCA0MD, 		#NOT(040h)

; Port configuration (1, Push Pull Output)
    mov P0MDOUT, #010h ; Output configuration for P0        0001 0000      P0.4 输出方式为推挽方式,其它为漏极开路
    mov P1MDOUT, #000h ; Output configuration for P1 
    mov P2MDOUT, #000h ; Output configuration for P2 
    mov P3MDOUT, #000h ; Output configuration for P3        0001 1000               P3.3 和 P3.4 为推挽方式,用来做测试引脚

    mov P0MDIN, #0FFh  ; Input configuration for P0         1111 1111      端口P0对应数字输入
    mov P1MDIN, #0FFh  ; Input configuration for P1
    mov P2MDIN, #0FFh  ; Input configuration for P2
    mov P3MDIN, #000h  ; Input configuration for P3

    mov P0SKIP, #000h  ;  Port 0 Crossbar Skip Register
    mov P1SKIP, #000h  ;  Port 1 Crossbar Skip Register
    mov P2SKIP, #000h  ;  Port 2 Crossbar Skip Register
 
    
		CLR AD0EN
		MOV REF0CN,#00001110B
		MOV AMX0P,#00011110B   //ADC0选择温度传感器,正输入
		MOV AMX0N, #00011111B    //GND为负输入

    MOV ADC0CN,#10000000B
	                                                                            ;**
    mov ADC0H, #000h    ; ADC Data MSB
    mov ADC0L, #000h    ; ADC Data LSB
	  mov ADC0LTH, #000h	; ADC Less-Than High Byte Register
	  mov ADC0LTL, #000h	; ADC Less-Than Low Byte Register
	  mov ADC0GTH, #0FFh	; ADC Greater-Than High Byte Register
	  mov ADC0GTL, #0FFh	; ADC Greater-Than Low Byte Register



    MOV SCON0,#10H
    mov PCON, #000h        ; Power Control Register
    mov TCON, #000h    ; Timer Control Register 
		mov CKCON, #00h    ;xitong shizhong  
    mov TH1, #96h     ; Timer 1 High Byte    //********************************************
    mov TL1, #96h     ; Timer 0 Low Byte
		mov TMOD, #20h    ; Timer Mode Register    //001h*************************************
		SETB TR1 

	  mov RSTSRC, #000h	; Reset Source Register

		RoomCode EQU 9800h
		LED2     EQU P2.2
		LED7     EQU P2.7
		TEMPCODE EQU 30H

			MOV A,#00H    
			CLR TI0
			MOV SBUF0,A
			JNB TI0,$
			CLR TI0

			MOV A,#0CCH    //77H 为M 的ASC码
			CLR TI0
			MOV SBUF0,A
			JNB TI0,$
			CLR TI0

			MOV A,#11H
			MOV SBUF0,A
			JNB TI0,$
			CLR TI0

       ANL   	PCA0MD, 		#NOT(040h)      ; clear Watchdog Enable bit


MOV DPTR,#0300H
MOV A,#00H
MOVC A,@A+DPTR
mov dptr,#0000h
XRL A,#01H
JZ Main2

Main:
    MOV A,#0FFH
		inc dptr
		MOV A,DPH
		XRL A,#20H
		JZ LAST
		MOV ADC0CN, #090H       //启动AD
		JNB AD0INT,$
		CLR AD0BUSY
				MOV A,ADC0H
				RL A
				RL A
				RL A
				RL A
				RL A
				RL A 
				ANL A,#0C0H
				MOV R0,A
				MOV A,ADC0L
				RR A
				RR A
				ANL A,#3FH
				ADD A,R0
		  	mov sbuf0,a
		  	jnb ti0,$
		  	clr ti0
	    	LJMP Main

Main2:
    MOV DPTR,#0000H
Main2_2:
    MOV A,#0FFH

    INC DPTR
		MOV A,DPH
		XRL A,#20H
		JZ LAST2
		MOV ADC0CN, #090H       //启动AD
		JNB AD0INT,$
		CLR AD0BUSY
				MOV A,ADC0L
		  	mov sbuf0,a
		  	jnb ti0,$
		  	clr ti0

	    	LJMP Main2_2

LAST:
MOV FLSCL,#10000000B
CLR EA     //1 关中断
ORL PSCTL,#00000010B
ORL PSCTL,#00000001B
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0300H
MOV A,#01H
MOVX @DPTR,A
ANL PSCTL,#11111101B

 MOV FLKEY,#0xA5
 MOV FLKEY,#0xF1
 MOV DPTR,#0300H
 MOV A,#01H
MOVX @DPTR,A
 MOV FLKEY,#0xA5
 MOV FLKEY,#0xF1
 MOV DPTR,#0301H
 MOV A,#02H
MOVX @DPTR,A
ANL PSCTL,#11111110B
MOV A,#ADC0H
MOV A,#00H
LJMP ENDSYS

LAST2:
MOV FLSCL,#10000000B
CLR EA     //1 关中断
ORL PSCTL,#00000010B
ORL PSCTL,#00000001B
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0300H
MOV A,#01H
MOVX @DPTR,A
ANL PSCTL,#11111101B

 MOV FLKEY,#0xA5
 MOV FLKEY,#0xF1
 MOV DPTR,#0300H
 MOV A,#03H
MOVX @DPTR,A
 MOV FLKEY,#0xA5
 MOV FLKEY,#0xF1
 MOV DPTR,#0301H
 MOV A,#04H
MOVX @DPTR,A
ANL PSCTL,#11111110B
MOV A,#ADC0H
MOV A,#00H
LJMP ENDSYS

ENDSYS:
    AJMP $

END





⌨️ 快捷键说明

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