📄 main.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 + -