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

📄 main.lis

📁 这是我自己在做实验设计时做的,用摩托罗拉飞思卡尔做的一个多功能电子钟
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .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 + -