📄 main.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 + -