📄 main.lis
字号:
.module main.c
.area text
; h -> 0,X
; l -> 1,X
0000 _main::
0000 A7FE ais #-2
0002 95 tsx
0003 ; #include "GP32C.H"
0003 ; #include "TIME.h"
0003 ; #include "KB.h" //键盘
0003 ; #include "LCD.h"
0003 ; //函数声明
0003 ; //extern void SCIInit(void);
0003 ; //extern void InitTime(void);
0003 ; //extern void SCISendN(unsigned char n,unsigned char ch[]);
0003 ; //extern void Timer1init(void);
0003 ; //extern void lcdshow(unsigned char *str);
0003 ; unsigned char time1[18]; //显示当前时间
0003 ; unsigned char time2[7]; //保存闹钟时间
0003 ; unsigned char time[7]; //存放时、分、秒
0003 ; unsigned char val;
0003 ; //unsigned char val1;
0003 ; unsigned char sign1;
0003 ; unsigned char sign2;
0003 ; //*====================================================*
0003 ; //*[主程序]
0003 ; void main()
0003 ; {
0003 ; unsigned char h,l;
0003 ; val=0;
0003 3F02 clr *_val
0005 ; //val1=0;
0005 ; DDRD=1;
0005 A601 lda #1
0007 B707 sta 0x7
0009 ; sign1=0;
0009 3F01 clr *_sign1
000B ; sign2=0;
000B 3F00 clr *_sign2
000D ; asm("SEI"); //关总中断
000D 9B SEI
000E ; //SCIInit();
000E ; Timer1init(); //调定时器1初始化子程序
000E CD0000 jsr _Timer1init
0011 ; KB_Init();
0011 CD0000 jsr _KB_Init
0014 ; InitTime(); //初始化时间
0014 CD0000 jsr _InitTime
0017 ; conver();
0017 CD0000 jsr _conver
001A ; lcdshow((unsigned char *)time1);
001A A60A lda #<_time1
001C 87 psha
001D A60A lda #>_time1
001F 87 psha
0020 CD0000 jsr _lcdshow
0023 A702 ais #2
0025 95 tsx
0026 ; //SCC2|=(1<<5); //令SCC2.5=1,允许接收中断
0026 ; asm("CLI");
0026 9A CLI
0027 CC00C2 jmp L3
002A L2:
002A ; while(1)
002A ; {
002A ; h=0;
002A 7F clr ,X
002B ; for(l=0;l<7;l++) //闹钟
002B 6F01 clr 1,X
002D 203D bra L8
002F L5:
002F ; {
002F ; if(time[l]!=time2[l]) break;
002F 3F00 clr *__r0
0031 E601 lda 1,X
0033 AB03 add #<_time2
0035 B700 sta *__r1
0037 B600 lda *__r0
0039 A903 adc #>_time2
003B B700 sta *__r0
003D 5500 ldhx *__r0
003F F6 lda ,x
0040 95 tsx
0041 B700 sta *__r1
0043 3F00 clr *__r2
0045 E601 lda 1,X
0047 AB1C add #<_time
0049 B700 sta *__r3
004B B600 lda *__r2
004D A91C adc #>_time
004F B700 sta *__r2
0051 5500 ldhx *__r2
0053 F6 lda ,x
0054 95 tsx
0055 B100 cmp *__r1
0057 2702 beq L9
0059 2017 bra L7
005B L9:
005B ; h++;
005B 7C inc ,X
005C ; if(h==7)
005C F6 lda ,X
005D A107 cmp #7
005F 2609 bne L11
0061 ; {
0061 ; alarmtime(30);
0061 A61E lda #30
0063 87 psha
0064 CD0000 jsr _alarmtime
0067 A701 ais #1
0069 95 tsx
006A ; }
006A L11:
006A L6:
006A 6C01 inc 1,X
006C L8:
006C E601 lda 1,X
006E A107 cmp #7
0070 25BD blo L5
0072 L7:
0072 ; }
0072 ; if((time[6]==0)&&(time[5]==0)&&(time[4]==0))//整点报时
0072 B622 lda *_time+6
0074 2615 bne L13
0076 B621 lda *_time+5
0078 2611 bne L13
007A B620 lda *_time+4
007C 260D bne L13
007E ; {
007E ; PTD=1;
007E A601 lda #1
0080 B703 sta 0x3
0082 ; delay();
0082 CD0000 jsr _delay
0085 ; PTD=0;
0085 3F03 clr 0x3
0087 ; delay();
0087 CD0000 jsr _delay
008A 95 tsx
008B ; }
008B L13:
008B ; if(sign1==1)
008B B601 lda *_sign1
008D A101 cmp #1
008F 260A bne L18
0091 ; {
0091 ; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
0091 121A bset #1,0x1a
0093 ; SetTime(); //设置时间
0093 CD0000 jsr _SetTime
0096 95 tsx
0097 ; sign1=0;
0097 3F01 clr *_sign1
0099 ; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
0099 131A bclr #1,0x1a
009B ; }
009B L18:
009B ; if(sign2==1)
009B B600 lda *_sign2
009D A101 cmp #1
009F 260A bne L20
00A1 ; {
00A1 ; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
00A1 121A bset #1,0x1a
00A3 ; sign2=0;
00A3 3F00 clr *_sign2
00A5 ; SetAlarmClock(); //设置闹钟时间
00A5 CD0000 jsr _SetAlarmClock
00A8 95 tsx
00A9 ; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
00A9 131A bclr #1,0x1a
00AB ; }
00AB L20:
00AB ; if (val==1) //时间溢出中断发生
00AB B602 lda *_val
00AD A101 cmp #1
00AF 2611 bne L22
00B1 ; {
00B1 ; conver();
00B1 CD0000 jsr _conver
00B4 ; lcdshow((unsigned char *)time1);//每一秒更新
00B4 A60A lda #<_time1
00B6 87 psha
00B7 A60A lda #>_time1
00B9 87 psha
00BA CD0000 jsr _lcdshow
00BD A702 ais #2
00BF 95 tsx
00C0 ; val=0;
00C0 3F02 clr *_val
00C2 ; }
00C2 L22:
00C2 L3:
00C2 CC002A jmp L2
00C5 X0:
00C5 L1:
00C5 A702 ais #2
00C7 .dbline 0 ; func end
00C7 81 rts
.area bss
0000 _sign2::
0000 .blkb 1
0001 _sign1::
0001 .blkb 1
0002 _val::
0002 .blkb 1
0003 _time2::
0003 .blkb 7
000A _time1::
000A .blkb 18
001C _time::
001C .blkb 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -