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

📄 main.lis

📁 freescale单片机电子时钟
💻 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 + -