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

📄 main.asm

📁 地磁炉控制程序 (带三位8字数码管显示
💻 ASM
字号:
;*********************************************************************
    org     0h                      ;
    jmp     ColdStart               ;power on reset.

    org     04h                     ;
    jmp     ext_int                 ;external interrupt subroutine.

    org     08h                     ;
    jmp     timer_int               ;timer interrupt subroutine.

    org     10h                     ;
ColdStart:
    call    host_init               ;
   
;   call    delay1s					;
	call	power_off				;
	clr		wait_f					;first time power on, no need to wait.

	call	int_init				;

	mov		a, AN_VOLTAGE			;dummy AD sample, in case voltage noise.
	call	ad_com					;
	clr		timer_VoltHigh			;

	call	SetBuzOnce				;
;*******************************************
mainloop:
    snz     ms_f                    ;every 2.5ms
    jmp     main_notms              ;

	call	set_timer   			;
	
    call    SetPortDir              ;set port direction again.
	jmp 	timer_check				;
TimerChkEnd:
	call	disp_process			;

	clr		ms_f					;
	clr		ms100_f					;
	clr		s3_f					;
	clr		minute_f				;

    call    display                 ;update LED display.

    mov		a, dgt_position			;scan the keyboard only when all digit OFF.
    xor		a, 3					;
	sz 		z						;
	call	kybd_GetKey				;

main_notms:
	call	key_scan				;
	jmp		keyjob					;

    jmp     mainloop                ;


;*********************************************************************
host_init:
    call    SetPortDir              ;set port to be input or output.
	clr		_pwm					;
	clr		_switch					;
	clr		_fan					;

    call    RAMclear             	;
    mov		a, 1					;	
    mov		timer_jianxie, a		;
    
    clr		error_flag				;
    clr		error_f					;
    ret                           	;


;************************************
delay1s:
    clr     w0                   ;a*257ms
    clr     w1                   ;
aa:
    clr     wdt                  ;
    sdz     w0                   ;
    jmp     aa                   ;
    sdz     w1                   ;
    jmp     aa                   ;
	ret

;***********************************
SetPortDir:
    clr     wdt                  ;

    mov     a, PAC_BAK           ;
    mov     PAC, A               ;
    mov     a, PBC_BAK           ;
    mov     PBC, A               ;
    mov     a, PDC_BAK           ;
    mov     PDC, A               ;
    ret

;*********************************
RamClear:
	mov     a, ramStart          ;ram start position.
	mov     mp, a                ;
host_loop:
	clr     r0                   ;
	inc     mp                   ;
	inc     acc                  ;
    snz     acc.7                ;xx-7fh
    jmp     host_loop            ;
    ret

;************************************
; every 2.0ms
;
set_timer:
	mov		a, 256-15 				;15*256= 3.84ms
	addm	a, timer_ms				;

    inc     timer_100ms             ;
	mov		a, timer_100ms			;
	add		a, (256-TIME_100MS)		;
	snz		c						;
    ret                             ;

    set		ms100_f					;
    clr     timer_100ms             ;
;***
	inc		timer_3s				;
	mov		a, timer_3s				;
	add		a, (256-TIME_3S)		;
	snz		c						;
	ret								;

	set		s3_f					;
	clr		timer_3s				;
;***
	inc		timer_minute			;
	mov		a, timer_minute			;
	add		a, (256-TIME_MINUTE)	;
	snz		c						;
	ret								;
	
	set		minute_f				;
	clr		timer_minute			;
	ret								;

⌨️ 快捷键说明

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