📄 main.lis
字号:
.module main.c
.area data
0000 _Time::
0000 .blkb 2
.area idata
0000 07D0 .word 2000
.area data
0002 .blkb 1
.area idata
0002 01 .byte 1
.area data
0003 .blkb 1
.area idata
0003 01 .byte 1
.area data
0004 .blkb 1
.area idata
0004 0C .byte 12
.area data
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data
0007 _Alarm::
0007 .blkb 2
.area idata
0007 07D0 .word 2000
.area data
0009 .blkb 1
.area idata
0009 01 .byte 1
.area data
000A .blkb 1
.area idata
000A 01 .byte 1
.area data
000B .blkb 1
.area idata
000B 07 .byte 7
.area data
000C .blkb 1
.area idata
000C 1E .byte 30
.area data
000D .blkb 1
.area idata
000D 00 .byte 0
.area data
000E _LCD_buff::
000E .blkb 32
.area idata
000E 20202020202020202020202020202020 .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
001E 20202020202020202020202020202020 .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.area data
002E _Timer_5sec_trigger::
002E .blkb 1
.area idata
002E 00 .byte 0
.area data
002F _Timer_5sec_counter::
002F .blkb 1
.area idata
002F 00 .byte 0
.area data
0030 _Alarm_counter::
0030 .blkb 1
.area idata
0030 00 .byte 0
.area data
0031 _Alarm_enable_flag::
0031 .blkb 1
.area idata
0031 00 .byte 0
.area data
0032 _Alarm_trigger::
0032 .blkb 1
.area idata
0032 00 .byte 0
.area data
0033 _Select_key_is_pressed_flag::
0033 .blkb 1
.area idata
0033 00 .byte 0
.area data
0034 _Up_Modify_key_is_pressed_flag::
0034 .blkb 1
.area idata
0034 00 .byte 0
.area data
0035 _Down_Modify_key_is_pressed_flag::
0035 .blkb 1
.area idata
0035 00 .byte 0
.area data
0036 _Normal_show_time::
0036 .blkb 1
.area idata
0036 01 .byte 1
.area data
0037 _Time_fresh::
0037 .blkb 1
.area idata
0037 01 .byte 1
.area data
0038 _Minute_second_integral_flag::
0038 .blkb 1
.area idata
0038 00 .byte 0
.area data
0039 _Integral_counter::
0039 .blkb 1
.area idata
0039 00 .byte 0
.area data
.area text
; j -> 7,X
; i -> 8,X
0000 _main::
0000 A7F7 ais #-9
0002 95 tsx
0003 ; /*-----------------------------------------------------*
0003 ; *工 程 名:
0003 ; *硬件连接:
0003 ; *程序描述: SD-HC08 模板生成
0003 ; */
0003 ; /*[头文件]*/
0003 ; #include "GP32C.h" //映像寄存器地址头文件
0003 ; #include "userdefine.h"
0003 ; #include "KB.h"
0003 ;
0003 ; #define TSTOPBit 5 //定时器计数停止位
0003 ; #define TOFBit 7 //定时器溢出标志位
0003 ;
0003 ; extern void lcdshow(unsigned char *str);
0003 ; extern void Lcd_show_cursor(char x,char y);
0003 ;
0003 ; void Time_Var2char(Time_Struct Time);
0003 ; void Timer1init(void);
0003 ; void Year_adjust(void);
0003 ; void Month_adjust(void);
0003 ; void Day_adjust(void);
0003 ; void Hour_adjust(void);
0003 ; void Minute_adjust(void);
0003 ; void A_Year_adjust(void);
0003 ; void A_Month_adjust(void);
0003 ; void A_Day_adjust(void);
0003 ; void A_Hour_adjust(void);
0003 ; void A_Minute_adjust(void);
0003 ; void Alarm_handle(void);
0003 ; void Alarm_play(void);
0003 ; void Alarm_Off(void);
0003 ; void swap(char *m,char *n);
0003 ;
0003 ;
0003 ; Time_Struct Time={2000,1,1,12,0,0};
0003 ; Time_Struct Alarm={2000,1,1,7,30,0};
0003 ; unsigned char LCD_buff[32]=" ";
0003 ; char Timer_5sec_trigger=0;
0003 ; char Timer_5sec_counter=0,Alarm_counter=0;
0003 ; char Alarm_enable_flag=0,Alarm_trigger=0;
0003 ; char Select_key_is_pressed_flag=0,Up_Modify_key_is_pressed_flag=0,Down_Modify_key_is_pressed_flag=0;
0003 ; char Normal_show_time=1,Time_fresh=1,Alarm_fresh;
0003 ; char Minute_second_integral_flag=0,Integral_counter=0;
0003 ;
0003 ; /*[主函数]*/
0003 ; void main()
0003 ; {
0003 ; char i,j=0;
0003 6F07 clr 7,X
0005 ; asm("SEI"); //关总中断
0005 9B SEI
0006 ; Timer1init(); //调定时器1初始化子程序
0006 CD0505 jsr _Timer1init
0009 ; KB_Init();
0009 CD0000 jsr _KB_Init
000C ; INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
000C 131A bclr #1,0x1a
000E ; Alarm_Off();
000E CD083E jsr _Alarm_Off
0011 95 tsx
0012 ; asm("CLI"); //开总中断
0012 9A CLI
0013 CC0212 jmp L5
0016 L4:
0016 ; while(1)
0016 ; {
0016 ; j++;
0016 6C07 inc 7,X
0018 CC020F jmp L8
001B L7:
001B ; while(1)
001B ; {
001B ; if(Normal_show_time&&Time_fresh)
001B B636 lda *_Normal_show_time
001D 277B beq L10
001F B637 lda *_Time_fresh
0021 2777 beq L10
0023 ; {
0023 ; Alarm_counter++;
0023 3C30 inc *_Alarm_counter
0025 ; for(i=11;i<16;i++)
0025 A60B lda #11
0027 E708 sta 8,X
0029 2016 bra L15
002B L12:
002B 3F00 clr *__r0
002D E608 lda 8,X
002F AB0E add #<_LCD_buff
0031 B700 sta *__r1
0033 B600 lda *__r0
0035 A90E adc #>_LCD_buff
0037 B700 sta *__r0
0039 A620 lda #32
003B 5500 ldhx *__r0
003D F7 sta ,x
003E 95 tsx
003F L13:
003F 6C08 inc 8,X
0041 L15:
0041 E608 lda 8,X
0043 A110 cmp #16
0045 25E4 blo L12
0047 ; {
0047 ; LCD_buff[i]=' ';
0047 ; }
0047 ; Time_Var2char(Time);
0047 3500 sthx *__r0
0049 450000 ldhx #_Time
004C F6 lda ,x
004D B700 sta *__r4
004F E601 lda 1,x
0051 B700 sta *__r5
0053 E602 lda 2,x
0055 B700 sta *__r6
0057 E603 lda 3,x
0059 B700 sta *__r7
005B E604 lda 4,x
005D B700 sta *__r8
005F E605 lda 5,x
0061 B700 sta *__r9
0063 E606 lda 6,x
0065 B700 sta *__r10
0067 5500 ldhx *__r0
0069 B600 lda *__r4
006B F7 sta ,x
006C B600 lda *__r5
006E E701 sta 1,x
0070 B600 lda *__r6
0072 E702 sta 2,x
0074 B600 lda *__r7
0076 E703 sta 3,x
0078 B600 lda *__r8
007A E704 sta 4,x
007C B600 lda *__r9
007E E705 sta 5,x
0080 B600 lda *__r10
0082 E706 sta 6,x
0084 95 tsx
0085 89 pshx
0086 8B pshh
0087 CD0218 jsr _Time_Var2char
008A A702 ais #2
008C ; lcdshow((unsigned char *)LCD_buff);
008C A60E lda #<_LCD_buff
008E 87 psha
008F A60E lda #>_LCD_buff
0091 87 psha
0092 CD0000 jsr _lcdshow
0095 A702 ais #2
0097 95 tsx
0098 ; Time_fresh=0;
0098 3F37 clr *_Time_fresh
009A ; }
009A L10:
009A ; if(!Normal_show_time&&Alarm_fresh)
009A B636 lda *_Normal_show_time
009C 2657 bne L16
009E B600 lda *_Alarm_fresh
00A0 2753 beq L16
00A2 ; {
00A2 ; Alarm_fresh=0;
00A2 3F00 clr *_Alarm_fresh
00A4 ; Time_Var2char(Alarm);
00A4 3500 sthx *__r0
00A6 450007 ldhx #_Alarm
00A9 F6 lda ,x
00AA B700 sta *__r4
00AC E601 lda 1,x
00AE B700 sta *__r5
00B0 E602 lda 2,x
00B2 B700 sta *__r6
00B4 E603 lda 3,x
00B6 B700 sta *__r7
00B8 E604 lda 4,x
00BA B700 sta *__r8
00BC E605 lda 5,x
00BE B700 sta *__r9
00C0 E606 lda 6,x
00C2 B700 sta *__r10
00C4 5500 ldhx *__r0
00C6 B600 lda *__r4
00C8 F7 sta ,x
00C9 B600 lda *__r5
00CB E701 sta 1,x
00CD B600 lda *__r6
00CF E702 sta 2,x
00D1 B600 lda *__r7
00D3 E703 sta 3,x
00D5 B600 lda *__r8
00D7 E704 sta 4,x
00D9 B600 lda *__r9
00DB E705 sta 5,x
00DD B600 lda *__r10
00DF E706 sta 6,x
00E1 95 tsx
00E2 89 pshx
00E3 8B pshh
00E4 CD0218 jsr _Time_Var2char
00E7 A702 ais #2
00E9 ; lcdshow((unsigned char *)LCD_buff);
00E9 A60E lda #<_LCD_buff
00EB 87 psha
00EC A60E lda #>_LCD_buff
00EE 87 psha
00EF CD0000 jsr _lcdshow
00F2 A702 ais #2
00F4 95 tsx
00F5 ; }
00F5 L16:
00F5 ; if(Alarm_trigger)
00F5 B632 lda *_Alarm_trigger
00F7 2714 beq L18
00F9 ; {
00F9 ; if(Alarm_counter<20)
00F9 B630 lda *_Alarm_counter
00FB A114 cmp #20
00FD 2406 bhs L20
00FF ; Alarm_play();
00FF CD0839 jsr _Alarm_play
0102 95 tsx
0103 2008 bra L21
0105 L20:
0105 ; else
0105 ; {
0105 ; Alarm_trigger=0;
0105 3F32 clr *_Alarm_trigger
0107 ; Alarm_counter=0;
0107 3F30 clr *_Alarm_counter
0109 ; Alarm_Off();
0109 CD083E jsr _Alarm_Off
010C 95 tsx
010D ; }
010D L21:
010D ; }
010D L18:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -