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

📄 main.asm

📁 这是一个段式lcd显示
💻 ASM
字号:
;; Compile Options : /TM610411 /MS /near /Ihead /SD /Od /W 1 /Fa_output\_obj\ /Zs 
;; Version Number  : Ver.3.08.6
;; File Name       : main.c

	type (M610411) 
	model small, near
	$$NCODmain segment code 2h #0h
	STACKSEG 0400h
CVERSION 3.08.6
CGLOBAL 01H 03H 0000H "main" 08H 02H 09H 00H 80H 00H 00H 00H 07H
CGLOBAL 01H 03H 0000H "sfr_init" 08H 02H 06H 00H 80H 00H 00H 00H 07H
CGLOBAL 01H 03H 0000H "key_scan" 08H 02H 10H 00H 80H 00H 00H 00H 07H
CGLOBAL 01H 03H 0000H "clock_check" 08H 02H 07H 00H 81H 02H 00H 00H 07H
CGLOBAL 01H 03H 0000H "common_clrWDT" 08H 02H 08H 00H 80H 00H 00H 00H 07H
CSTRUCTTAG 0000H 0000H 0003H 0008H 00000001H "_Notag"
CSTRUCTMEM 52H 00000001H 00000000H "bit0" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000001H "bit1" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000002H "bit2" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000003H "bit3" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000004H "bit4" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000005H "bit5" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000006H "bit6" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000007H "bit7" 02H 00H 00H
CSTRUCTTAG 0000H 0000H 0002H 0008H 00000001H "_Notag"
CSTRUCTMEM 52H 00000001H 00000000H "b0" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000001H "b1" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000002H "b2" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000003H "b3" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000004H "b4" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000005H "b5" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000006H "b6" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000007H "b7" 02H 00H 00H
CSTRUCTTAG 0000H 0000H 0001H 0008H 00000001H "Bit_Flag_Byte"
CSTRUCTMEM 52H 00000001H 00000000H "B0" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000001H "B1" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000002H "B2" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000003H "B3" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000004H "B4" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000005H "B5" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000006H "B6" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000007H "B7" 02H 00H 00H
CSTRUCTTAG 0000H 0000H 0000H 0008H 00000001H "_Notag"
CSTRUCTMEM 52H 00000001H 00000000H "b0" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000001H "b1" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000002H "b2" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000003H "b3" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000004H "b4" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000005H "b5" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000006H "b6" 02H 00H 00H
CSTRUCTMEM 52H 00000001H 00000007H "b7" 02H 00H 00H
CUNIONTAG 0000H 0000H 0004H 0002H 00000001H "_Notag"
CUNIONMEM 42H 00000001H "byte" 02H 00H 00H
CUNIONMEM 43H 00000001H "bit" 04H 00H 05H 03H 00H
CTYPEDEF 0000H 0000H 42H "ushort" 02H 00H 08H
CTYPEDEF 0000H 0000H 43H "_BYTE_FIELD_01" 04H 00H 05H 02H 00H
CTYPEDEF 0000H 0000H 43H "_BYTE_FIELD" 04H 00H 05H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data_hour" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data" 02H 00H 00H
CGLOBAL 00H 43H 0001H "nixietube4" 04H 00H 06H 04H 00H
CGLOBAL 00H 43H 0001H "nixietube5" 04H 00H 06H 04H 00H
CGLOBAL 00H 43H 0001H "nixietube6" 04H 00H 06H 04H 00H
CGLOBAL 00H 43H 0001H "nixietube1" 04H 00H 06H 04H 00H
CGLOBAL 00H 43H 0001H "nixietube2" 04H 00H 06H 04H 00H
CGLOBAL 00H 43H 0001H "nixietube3" 04H 00H 06H 04H 00H
CGLOBAL 00H 43H 0002H "hun" 02H 00H 01H
CGLOBAL 00H 43H 0002H "data" 02H 00H 01H
CGLOBAL 00H 43H 0002H "ten" 02H 00H 01H
CGLOBAL 00H 43H 0001H "_status" 04H 00H 06H 04H 00H
CGLOBAL 00H 42H 000AH "rFont_Buf" 05H 01H 0AH 00H 00H 00H
CGLOBAL 00H 42H 0001H "temp_data" 02H 00H 00H
CGLOBAL 00H 42H 0001H "rMinute" 02H 00H 00H
CGLOBAL 00H 42H 0001H "cont_500ms" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data5" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data6" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data0" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data1" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data2" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data3" 02H 00H 00H
CGLOBAL 00H 43H 0002H "ten_num" 02H 00H 01H
CGLOBAL 00H 43H 0002H "hun_num" 02H 00H 01H
CGLOBAL 00H 42H 0001H "display_data" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data_min" 02H 00H 00H
CGLOBAL 00H 42H 0001H "disp_data_sec" 02H 00H 00H
CGLOBAL 00H 43H 0002H "data_num" 02H 00H 01H
CGLOBAL 00H 42H 000AH "rLcd_Buf" 05H 01H 0AH 00H 00H 00H
CGLOBAL 00H 43H 0002H "thou_num" 02H 00H 01H
CGLOBAL 00H 42H 0001H "cont_1min" 02H 00H 00H
CGLOBAL 00H 42H 0001H "cycle_cnt" 02H 00H 00H
CGLOBAL 00H 42H 0001H "display_number" 02H 00H 00H
CGLOBAL 00H 42H 0001H "sadc_dataH" 02H 00H 00H
CGLOBAL 00H 42H 0001H "sadc_dataL" 02H 00H 00H
CGLOBAL 00H 42H 0001H "rHour" 02H 00H 00H
CGLOBAL 00H 43H 0002H "thou" 02H 00H 01H
CGLOBAL 00H 42H 0001H "tempH" 02H 00H 00H
CGLOBAL 00H 42H 0001H "tempL" 02H 00H 00H
CGLOBAL 00H 42H 0002H "adc_data" 02H 00H 01H
CGLOBAL 00H 42H 0001H "cont_1hour" 02H 00H 00H
CGLOBAL 00H 43H 0001H "sym_flag" 04H 00H 05H 01H 00H
CGLOBAL 00H 42H 0001H "cont_1second" 02H 00H 00H
CFILE 0001H 00000579H "C:\\PROGRA~1\\U8Dev\\Inc\\m610411.h"
CFILE 0002H 00000052H "head\\common.h"
CFILE 0003H 000000EFH "head\\lcd.h"
CFILE 0000H 0000007EH "main.c"

	rseg $$NCODmain
CFUNCTION 9

_main	:
CBLOCK 9 1 24

;;{
CLINE 0001H 0018H 0001H 0001H
CBLOCK 9 2 24

;;	__DI();              		    	/* Interrupt Disable */
CLINE 0001H 0019H 0002H 0034H
	di

;;	sfr_init() ;                  /* Initialize SFR */ 
CLINE 0001H 001AH 0002H 0034H
	bl	_sfr_init

;;	lcd_init();                   /* Initialize A&B */ 		         
CLINE 0001H 001BH 0002H 003FH
	bl	_lcd_init

;;	__EI();             			  	/* Interrupt Enable */	
CLINE 0001H 001CH 0002H 0032H
	ei

;;	while (1)									  	// Loop     
CLINE 0001H 001EH 0002H 0022H
	bal	_$L1
_$L3 :
CBLOCK 9 3 31

;;		clock_check();              // 
CLINE 0001H 0020H 0003H 0021H
	bl	_clock_check

;;	  common_clrWDT();            //clear watchdog	
CLINE 0001H 0021H 0004H 0030H
	bl	_common_clrWDT
CBLOCKEND 9 3 34

;;  }
CLINE 0000H 0022H 0003H 0003H
_$L1 :

;;	while (1)									  	// Loop     
CLINE 0000H 001EH 0000H 0000H
	mov	er0,	#0 
	cmp	r0,	#01h
	cmpc	r1,	#00h
	bne	_$L3

;;  }
CLINE 0000H 0022H 0003H 0003H
CBLOCKEND 9 2 35

;;}
CLINE 0001H 0023H 0001H 0001H
_$$end_of_main :
	bal	$
CBLOCKEND 9 1 35
CFUNCTIONEND 9

CFUNCTION 6

_sfr_init	:
CBLOCK 6 1 41

;;{           
CLINE 0001H 0029H 0001H 000CH
CBLOCK 6 2 41

;;  P2CON0=0xff;                  //output mode select 	                    
CLINE 0001H 002CH 0003H 004AH
	mov	r0,	#0ffh
	st	r0,	0f212h

;;	P2CON1=0xff;                  //CMOS output mode
CLINE 0001H 002DH 0002H 0031H
	st	r0,	0f213h

;;	 P0CON0=0x03;                            
CLINE 0001H 0031H 0003H 002AH
	mov	r0,	#03h
	st	r0,	0f206h

;;   P0CON1=0x00;                  //pull up input mode
CLINE 0001H 0032H 0004H 0035H
	mov	r0,	#00h
	st	r0,	0f207h

;;  E2H=1;                        //enable T2Hz interrupt
CLINE 0001H 0036H 0003H 0037H
	sb	0f017h.3

;;  cont_1second=0;
CLINE 0001H 0038H 0003H 0011H
	st	r0,	NEAR _cont_1second

;;  cont_1min=58;
CLINE 0001H 0039H 0003H 000FH
	mov	r0,	#03ah
	st	r0,	NEAR _cont_1min

;;  cont_1hour=22;
CLINE 0001H 003AH 0003H 0010H
	mov	r0,	#016h
	st	r0,	NEAR _cont_1hour
CBLOCKEND 6 2 59

;;}
CLINE 0001H 003BH 0001H 0001H
	rt
CBLOCKEND 6 1 59
CFUNCTIONEND 6

CFUNCTION 8

_common_clrWDT	:
CBLOCK 8 1 65

;;{
CLINE 0001H 0041H 0001H 0001H
CBLOCK 8 2 65

;;	if ( WDP == 1 )
CLINE 0001H 0042H 0002H 0010H
	tb	0f00eh.0
	beq	_$L7
CBLOCK 8 3 67

;;		WDTCON = (unsigned char)0xA5u;	  /* WDP : 1 -> 0 */
CLINE 0001H 0044H 0003H 0035H
	mov	r0,	#0a5h
	st	r0,	0f00eh
CBLOCKEND 8 3 69

;;	}
CLINE 0000H 0045H 0002H 0002H
_$L7 :

;;  	WDTCON = (unsigned char)0x5A;		  /* WDP : 0 -> 1 */
CLINE 0001H 0046H 0004H 0036H
	mov	r0,	#05ah
	st	r0,	0f00eh

;;  	WDTCON = (unsigned char)0xA5;		  /* WDP : 1 -> 0 */ 	
CLINE 0001H 0047H 0004H 0038H
	mov	r0,	#0a5h
	st	r0,	0f00eh
CBLOCKEND 8 2 72

;;}  	
CLINE 0001H 0048H 0001H 0004H
	rt
CBLOCKEND 8 1 72
CFUNCTIONEND 8

CFUNCTION 7

_clock_check	:
CBLOCK 7 1 77

;;{
CLINE 0001H 004DH 0001H 0001H
	push	lr
CBLOCK 7 2 77
CRET 0000H

;;	if (f_1s==1)
CLINE 0001H 004EH 0002H 000DH
	tb	NEAR _sym_flag.3
	beq	_$L10
CBLOCK 7 3 79

;;	   	 f_1s=0;
CLINE 0001H 0050H 0007H 000DH
	rb	NEAR _sym_flag.3

;;	   	 key_scan();
CLINE 0001H 0052H 0007H 0011H
	bl	_key_scan

;;	   	 if(cont_1second<59)
CLINE 0001H 0054H 0007H 0019H
	l	r0,	NEAR _cont_1second
	cmp	r0,	#03bh
	bge	_$L12
CBLOCK 7 4 85

;;	   	    cont_1second++;	//秒计时
CLINE 0000H 0056H 000AH 0021H
	mov	r1,	#00h
	add	er0,	#1 
	st	r0,	NEAR _cont_1second
CBLOCKEND 7 4 88

;;	     else if(cont_1min<59) 
CLINE 0001H 0059H 0007H 001CH
	bal	_$L14
_$L12 :
	l	r0,	NEAR _cont_1min
	cmp	r0,	#03bh
	bge	_$L15
CBLOCK 7 5 90

;;	     	  	cont_1second=0;
CLINE 0001H 005BH 000BH 0019H
	mov	r0,	#00h
	st	r0,	NEAR _cont_1second

;;	     	  	  cont_1min++;   //分计时
CLINE 0000H 005CH 000DH 0023H
	l	r0,	NEAR _cont_1min
	mov	r1,	#00h
	add	er0,	#1 
	st	r0,	NEAR _cont_1min
CBLOCKEND 7 5 93

;;	     	   else if(cont_1hour<23)
CLINE 0001H 005EH 000BH 0020H
	bal	_$L17
_$L15 :
	l	r0,	NEAR _cont_1hour
	cmp	r0,	#017h
	bge	_$L18
CBLOCK 7 6 95

;;	     	   	 	cont_1second=0;
CLINE 0001H 0060H 000EH 001CH
	mov	r0,	#00h
	st	r0,	NEAR _cont_1second

;;	     	   	 	cont_1min=0;
CLINE 0001H 0061H 000EH 0019H
	st	r0,	NEAR _cont_1min

;;	     	   	 	cont_1hour++;
CLINE 0000H 0062H 000EH 001AH
	l	r0,	NEAR _cont_1hour
	mov	r1,	#00h
	add	er0,	#1 
	st	r0,	NEAR _cont_1hour
CBLOCKEND 7 6 99

;;	     	   	 else	
CLINE 0001H 0064H 000DH 0011H
	bal	_$L20
_$L18 :
CBLOCK 7 7 101

;;	     	   	 		cont_1hour=0;
CLINE 0001H 0066H 000FH 001BH
	mov	r0,	#00h
	st	r0,	NEAR _cont_1hour

;;	     	   	 		cont_1min =0;
CLINE 0001H 0067H 000FH 001BH
	st	r0,	NEAR _cont_1min

;;	     	   	 		cont_1second=0;
CLINE 0001H 0068H 000FH 001DH
	st	r0,	NEAR _cont_1second
CBLOCKEND 7 7 105

;;	     	   	 	} 
CLINE 0000H 0069H 000EH 000FH
_$L20 :
_$L17 :
_$L14 :

;;	     disp_data_sec=cont_1second;
CLINE 0001H 006BH 0007H 0021H
	l	r0,	NEAR _cont_1second
	st	r0,	NEAR _disp_data_sec

;;	     disp_data_min=cont_1min;
CLINE 0001H 006CH 0007H 001EH
	l	r0,	NEAR _cont_1min
	st	r0,	NEAR _disp_data_min

;;	     disp_data_hour= cont_1hour;
CLINE 0001H 006DH 0007H 0021H
	l	r0,	NEAR _cont_1hour
	st	r0,	NEAR _disp_data_hour

;;	     lcd_display();            //call lcd display
CLINE 0001H 006FH 0007H 0032H
	bl	_lcd_display
CBLOCKEND 7 3 112

;;	   }   
CLINE 0000H 0070H 0005H 0008H
_$L10 :
CBLOCKEND 7 2 113

;;}
CLINE 0001H 0071H 0001H 0001H
	pop	pc
CBLOCKEND 7 1 113
CFUNCTIONEND 7

CFUNCTION 16

_key_scan	:
CBLOCK 16 1 116

;; {
CLINE 0001H 0074H 0002H 0002H
CBLOCK 16 2 116
CARGUMENT 47H 0002H 0000H "viod" 02H 00H 01H

;; 	if(key0==0)  //while(key0);
CLINE 0001H 0075H 0003H 001DH
	tb	0f204h.0
	bne	_$L22

;; 		 if(cont_1hour<24) cont_1hour++;
CLINE 0001H 0076H 0005H 0023H
	l	r0,	NEAR _cont_1hour
	cmp	r0,	#018h
	bge	_$L24
	mov	r1,	#00h
	add	er0,	#1 
	st	r0,	NEAR _cont_1hour

;; 		else if(key1==0) 
CLINE 0001H 0078H 0004H 0014H
	bal	_$L26
_$L24 :
	tb	0f204h.1
	bne	_$L27

;; 		   cont_1min++;
CLINE 0000H 0079H 0007H 0012H
	l	r0,	NEAR _cont_1min
	mov	r1,	#00h
	add	er0,	#1 
	st	r0,	NEAR _cont_1min
_$L27 :
_$L26 :
_$L22 :
CBLOCKEND 16 2 122

;; 	}
CLINE 0001H 007AH 0003H 0003H
	rt
CBLOCKEND 16 1 122
CFUNCTIONEND 16

	public _main
	public _sfr_init
	public _key_scan
	public _clock_check
	public _common_clrWDT
	_disp_data_hour comm data 01h #00h
	_disp_data comm data 01h #00h
	_nixietube4 comm data 01h #00h
	_nixietube5 comm data 01h #00h
	_nixietube6 comm data 01h #00h
	_nixietube1 comm data 01h #00h
	_nixietube2 comm data 01h #00h
	_nixietube3 comm data 01h #00h
	_hun comm data 02h #00h
	_data comm data 02h #00h
	_ten comm data 02h #00h
	__status comm data 01h #00h
	_rFont_Buf comm data 0ah #00h
	_temp_data comm data 01h #00h
	_rMinute comm data 01h #00h
	_cont_500ms comm data 01h #00h
	_disp_data5 comm data 01h #00h
	_disp_data6 comm data 01h #00h
	_disp_data0 comm data 01h #00h
	_disp_data1 comm data 01h #00h
	_disp_data2 comm data 01h #00h
	_disp_data3 comm data 01h #00h
	_ten_num comm data 02h #00h
	_hun_num comm data 02h #00h
	_display_data comm data 01h #00h
	_disp_data_min comm data 01h #00h
	_disp_data_sec comm data 01h #00h
	_data_num comm data 02h #00h
	_rLcd_Buf comm data 0ah #00h
	_thou_num comm data 02h #00h
	_cont_1min comm data 01h #00h
	_cycle_cnt comm data 01h #00h
	_display_number comm data 01h #00h
	_sadc_dataH comm data 01h #00h
	_sadc_dataL comm data 01h #00h
	_rHour comm data 01h #00h
	_thou comm data 02h #00h
	_tempH comm data 01h #00h
	_tempL comm data 01h #00h
	_adc_data comm data 02h #00h
	_cont_1hour comm data 01h #00h
	_sym_flag comm data 01h #00h
	_cont_1second comm data 01h #00h
	extrn code near : _lcd_init
	extrn code near : _lcd_display
	extrn code : $$start_up

	cseg #00h at 02h
	dw	$$start_up

	end

⌨️ 快捷键说明

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