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

📄 main.lis

📁 可以显示年月日,时间等,也可以设置闹钟,设定时间
💻 LIS
字号:
                        .module main.c
                        .area data
 0000           _data::
 0000                   .blkb 2
                        .area idata
 0000 0001              .word 1
                        .area data
 0002                   .blkb 2
                        .area idata
 0002 0007              .word 7
                        .area data
 0004                   .blkb 2
                        .area idata
 0004 07D7              .word 2007
                        .area data
 0006           _naozhong::
 0006                   .blkb 1
                        .area idata
 0006 00                .byte 0
                        .area data
 0007           _KB_valve::
 0007                   .blkb 1
                        .area idata
 0007 00                .byte 0
                        .area data
                        .area text
                ;              i -> 0,X
                ;              j -> 1,X
 0000           _main::
 0000 A7FE              ais #-2
 0002 95                tsx
 0003           ; /*-----------------------------------------------------*
 0003           ; *工 程 名:Lcd.prj                                      *
 0003           ; *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接          *
 0003           ; *          2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接    *
 0003           ; *功能:1.初始显示:"Wait Receiving.." "Soochow 2005.08"  *
 0003           ; *     2.等待接收字符,当收到32个字符时显示,重复此功能   *
 0003           ; *----------《嵌入式应用技术基础教程》教学实例---------*/
 0003           ; /*[头文件]*/
 0003           ; #include "SCI.h"       //串行通信子程序头文件
 0003           ; #include "GP32C.h"        //包含头文件
 0003           ; #include "KB.h"               //键盘中断头文件
 0003           ; /*[函数声明]*/
 0003           ; extern void lcdshow(unsigned char *str1,unsigned char *str2);
 0003           ; extern void SCIInit(void);
 0003           ; extern void Akey(void);
 0003           ; void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] );         //闹钟时间日期的显示的初始化
 0003           ; void Timer1init(void);
 0003           ; /*[主程序]*/
 0003           ; #define TSTOPBit   5      //定时器计数停止位
 0003           ; #define TOFBit     7      //定时器溢出标志位
 0003           ; unsigned char time[3], *str1,*str2,alart[2];      //存放时、分、秒
 0003           ; unsigned int  data[3]={1,7,2007};      //存放日,月,年
 0003           ; unsigned char clockstr[],datestr[],naozhong=0,KB_valve=0;
 0003           ; void main()
 0003           ;  {   
 0003           ;      unsigned char i; 
 0003           ;        unsigned char j;
 0003           ;        DDRA=0x0ff;  //定义pta口为输出
 0003 A6FF              lda #-1
 0005 B704              sta 0x4
 0007           ;      PTA=0x00;   // 初值是0
 0007 3F00              clr 0
 0009           ;        asm("SEI");               //关总中断             
 0009 9B                SEI
 000A           ;        KB_Init();                 //键盘初始化
 000A CD0000            jsr _KB_Init
 000D           ;        SCIInit();             //调串行口初始化子程序
 000D CD0000            jsr _SCIInit
 0010           ;        Timer1init();             //调定时器1初始化子程序
 0010 CD0073            jsr _Timer1init
 0013 95                tsx
 0014           ;        SCC2|=(1<<5);             //令SCC2.5=1,允许接收中断
 0014 1A14              bset #5,0x14
 0016           ;        INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
 0016 131A              bclr #1,0x1a
 0018           ;        asm("CLI");               //开总中断
 0018 9A                CLI
 0019           ;        i=time[0];
 0019 B608              lda *_time
 001B F7                sta ,X
 001C 2050              bra L3
 001E           L2:
 001E           ; 	 while(1)
 001E           ; 	{ 
 001E           ; 	  j=time[0];    
 001E B608              lda *_time
 0020 E701              sta 1,X
 0022           ;         if (i!=j)                      //数组已经更新
 0022 F6                lda ,X
 0023 E101              cmp 1,X
 0025 2729              beq L5
 0027           ;            {  sys_init( time, data, alart ); 
 0027 450002            ldhx #_alart
 002A 89                pshx
 002B 8B                pshh
 002C 450000            ldhx #_data
 002F 89                pshx
 0030 8B                pshh
 0031 450008            ldhx #_time
 0034 89                pshx
 0035 8B                pshh
 0036 CD0000            jsr _sys_init
 0039 A706              ais #6
 003B           ;            lcdshow((unsigned char *)datestr,(unsigned char *)clockstr); i=j;} //发送新数据
 003B A601              lda #<_clockstr
 003D 87                psha
 003E A601              lda #>_clockstr
 0040 87                psha
 0041 A600              lda #<_datestr
 0043 87                psha
 0044 A600              lda #>_datestr
 0046 87                psha
 0047 CD0000            jsr _lcdshow
 004A A704              ais #4
 004C 95                tsx
 004D E601              lda 1,X
 004F F7                sta ,X
 0050           L5:
 0050           ; 	   if(naozhong==1)
 0050 B606              lda *_naozhong
 0052 A101              cmp #1
 0054 260E              bne L7
 0056           ;          {   
 0056 200A              bra L10
 0058           L9:
 0058           ; 	      while(1)
 0058           ; 	      {   naozhong=0;
 0058 3F06              clr *_naozhong
 005A           ;                 if(KB_valve=='0')break;
 005A B607              lda *_KB_valve
 005C A130              cmp #48
 005E 2602              bne L12
 0060 2002              bra L11
 0062           L12:
 0062           L10:
 0062 20F4              bra L9
 0064           L11:
 0064           ; 	      }
 0064           ; 	    }
 0064           L7:
 0064           ; 	   if( KB_valve== 'A')Akey();
 0064 B607              lda *_KB_valve
 0066 A141              cmp #65
 0068 2604              bne L14
 006A CD0000            jsr _Akey
 006D 95                tsx
 006E           L14:
 006E           L3:
 006E 20AE              bra L2
 0070           X0:
 0070           L1:
 0070 A702              ais #2
 0072                   .dbline 0 ; func end
 0072 81                rts
 0073           _Timer1init::
 0073           ; 	   
 0073           ; 	   
 0073           ;      }
 0073           ;   }
 0073           ; /*[内部直接调用子程序存放处]*/
 0073           ; /*Timer1init:定时器1初始化子程序-----------------------*
 0073           ; *功能:对定时器1初始化                                  *
 0073           ; *参数:无                                               *
 0073           ; *返回:无                                               *
 0073           ; *-----------------------------------------------------*/
 0073           ; void Timer1init(void)
 0073           ;  {
 0073           ;      //允许溢出中断、不启动计数、分频因子=64
 0073           ;      T1SC=0b01100110;
 0073 A666              lda #102
 0075 B720              sta 0x20
 0077           ;      //计数寄存器初值=0x0000
 0077           ;      T1CNTH=0x00; T1CNTL=0x00;           
 0077 3F21              clr 0x21
 0079 3F22              clr 0x22
 007B           ;      //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
 007B           ;      T1MODH=0x96; T1MODL=0x00;
 007B A696              lda #-106
 007D B723              sta 0x23
 007F 3F24              clr 0x24
 0081           ;      //允许定时器1计数寄存器计数
 0081           ;      T1SC&=~(1<<TSTOPBit);
 0081 1B20              bclr #5,0x20
 0083           L16:
 0083                   .dbline 0 ; func end
 0083 81                rts
                        .area bss
 0000           _datestr::
 0000                   .blkb 1
 0001           _clockstr::
 0001                   .blkb 1
 0002           _alart::
 0002                   .blkb 2
 0004           _str2::
 0004                   .blkb 2
 0006           _str1::
 0006                   .blkb 2
 0008           _time::
 0008                   .blkb 3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -