📄 main.lis
字号:
.module main.c
.area data
0000 _FLine::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data
0001 .dbfile main.c
0001 .dbsym e FLine _FLine c
0001 _LcdShowBuff::
0001 .blkb 64
.area idata
0001 CBD5D6DDB4F3D1A72020202020202020 .byte 203,213,214,221,180,243,209,167,32,32,32,32,32,32,32,32
0011 B5A5C6ACBBFACAB5D1E9CAD220202020 .byte 181,165,198,172,187,250,202,181,209,233,202,210,32,32,32,32
0021 687474703A2F2F73756D63752E732020 .byte 'h,'t,'t,'p,58,47,47,'s,'u,'m,'c,'u,46,'s,32,32
0031 7564612E6564752E636E202020202020 .byte 'u,'d,'a,46,'e,'d,'u,46,'c,'n,32,32,32,32,32,32
.area data
0041 .dbfile main.c
0041 .dbsym e LcdShowBuff _LcdShowBuff A[64:64]c
.area text
0000 .dbfile main.c
0000 .dbfunc e main _main fV
0000 ; RF -> 0,X
0000 ; LN -> 2,X
0000 _main::
0000 .dbline -1
0000 A7FD ais #-3
0002 95 tsx
0003 .dbline 31
0003 ; /*-----------------------------------------------------*
0003 ; *工 程 名:TG12864E02.prj *
0003 ; *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 *
0003 ; * 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 *
0003 ; * 功 能:初始时显示:"苏州大学 " *
0003 ; * "单片机实验室 " *
0003 ; * "http://sumcu.s " *
0003 ; * "uda.edu.cn " *
0003 ; *-----------------------------------------------------*/
0003 ;
0003 ; /*[头文件]*/
0003 ; #include "GP32C.h" //映像寄存器地址头文件
0003 ; #include "lcd.h" //Lcd头文件
0003 ; #include "SCI.h" //SCI头文件
0003 ; //有关定时器寄存器位定义
0003 ; #define TSTOPBit 5 //定时器计数停止位
0003 ; //定时器初始化函数声明
0003 ; void Timer1init(void);
0003 ; //SCI初始化
0003 ; extern void SCIInit(void);
0003 ; //全局变量声明
0003 ; unsigned char FLine=0; //得到焦点的行号
0003 ; //[外部定义64个字节的Lcd显示缓冲区]
0003 ; unsigned char LcdShowBuff[64]="苏州大学 "
0003 ; "单片机实验室 "
0003 ; "http://sumcu.s "
0003 ; "uda.edu.cn ";
0003 ; //*====================================================*
0003 ; /*[主函数]*/
0003 ; void main()
0003 ; {
0003 .dbline 34
0003 ; unsigned char *RF; //接收标志
0003 ; unsigned char LN; //行号标志
0003 ; asm("SEI"); //关总中断
0003 9B SEI
0004 .dbline 35
0004 ; Timer1init(); //调定时器1初始化子程序
0004 CD0097 jsr _Timer1init
0007 .dbline 36
0007 ; Lcdinit(); //Lcd初始化
0007 CD0000 jsr _Lcdinit
000A .dbline 37
000A ; SCIInit(); //SCI初始化
000A CD0000 jsr _SCIInit
000D 95 tsx
000E .dbline 38
000E ; asm("CLI"); //开总中断
000E 9A CLI
000F CC0091 jmp L3
0012 L2:
0012 .dbline 42
0012 ; //[主循环]
0012 ; //循环等待接收
0012 ; while(1)
0012 ; {
0012 .dbline 43
0012 ; SCISend1(86);
0012 A656 lda #86
0014 87 psha
0015 CD0000 jsr _SCISend1
0018 A701 ais #1
001A 95 tsx
001B .dbline 44
001B ; if(SCIRe1(RF)!=56) continue;
001B E601 lda 1,X
001D 87 psha
001E F6 lda ,X
001F 87 psha
0020 CD0000 jsr _SCIRe1
0023 A702 ais #2
0025 95 tsx
0026 B700 sta *__r1
0028 A138 cmp #56
002A 2702 beq L5
002C .dbline 44
002C 2063 bra L3
002E L5:
002E .dbline 45
002E ; LN=SCIRe1(RF);
002E E601 lda 1,X
0030 87 psha
0031 F6 lda ,X
0032 87 psha
0033 CD0000 jsr _SCIRe1
0036 A702 ais #2
0038 95 tsx
0039 B700 sta *__r1
003B E702 sta 2,X
003D .dbline 46
003D ; if(LN==1) //将接收到的数据放在第一行显示缓冲区
003D A101 cmp #1
003F 2610 bne L7
0041 .dbline 47
0041 ; SCIReN(16,LcdShowBuff);
0041 450001 ldhx #_LcdShowBuff
0044 89 pshx
0045 8B pshh
0046 A610 lda #16
0048 87 psha
0049 CD0000 jsr _SCIReN
004C A703 ais #3
004E 95 tsx
004F 2040 bra L8
0051 L7:
0051 .dbline 48
0051 ; else if(LN==2)//将接收到的数据放在第二行显示缓冲区
0051 E602 lda 2,X
0053 A102 cmp #2
0055 2610 bne L9
0057 .dbline 49
0057 ; SCIReN(16,LcdShowBuff+16);
0057 450011 ldhx #_LcdShowBuff+16
005A 89 pshx
005B 8B pshh
005C A610 lda #16
005E 87 psha
005F CD0000 jsr _SCIReN
0062 A703 ais #3
0064 95 tsx
0065 202A bra L10
0067 L9:
0067 .dbline 50
0067 ; else if(LN==3)//将接收到的数据放在第三行显示缓冲区
0067 E602 lda 2,X
0069 A103 cmp #3
006B 2610 bne L12
006D .dbline 51
006D ; SCIReN(16,LcdShowBuff+32);
006D 450021 ldhx #_LcdShowBuff+32
0070 89 pshx
0071 8B pshh
0072 A610 lda #16
0074 87 psha
0075 CD0000 jsr _SCIReN
0078 A703 ais #3
007A 95 tsx
007B 2014 bra L13
007D L12:
007D .dbline 52
007D ; else if(LN==4)//将接收到的数据放在第四行显示缓冲区
007D E602 lda 2,X
007F A104 cmp #4
0081 260E bne L15
0083 .dbline 53
0083 ; SCIReN(16,LcdShowBuff+48);
0083 450031 ldhx #_LcdShowBuff+48
0086 89 pshx
0087 8B pshh
0088 A610 lda #16
008A 87 psha
008B CD0000 jsr _SCIReN
008E A703 ais #3
0090 95 tsx
0091 L15:
0091 L13:
0091 L10:
0091 L8:
0091 .dbline 54
0091 L3:
0091 .dbline 41
0091 CC0012 jmp L2
0094 X0:
0094 .dbline -2
0094 L1:
0094 A703 ais #3
0096 .dbline 0 ; func end
0096 81 rts
0097 .dbsym l RF 0 pc
0097 .dbsym l LN 2 c
0097 .dbend
0097 .dbfunc e Timer1init _Timer1init fV
0097 _Timer1init::
0097 .dbline -1
0097 .dbline 64
0097 ; }
0097 ; }
0097 ;
0097 ; /*[内部直接调用子程序存放处]*/
0097 ; /*Timer1init:定时器1初始化子程序-----------------------*
0097 ; *功能:对定时器1初始化 *
0097 ; *参数:无 *
0097 ; *返回:无 *
0097 ; *-----------------------------------------------------*/
0097 ; void Timer1init(void)
0097 ; {
0097 .dbline 66
0097 ; //允许溢出中断、不启动计数、分频因子=64
0097 ; T1SC=0b01100110;
0097 A666 lda #102
0099 B720 sta 0x20
009B .dbline 68
009B ; //计数寄存器初值=0x0000
009B ; T1CNTH=0x00; T1CNTL=0x00;
009B 3F21 clr 0x21
009D .dbline 68
009D 3F22 clr 0x22
009F .dbline 71
009F ; //1/2秒产生1次溢出中断
009F ; //计数寄存器=1/2×(2457600/64)=1200
009F ; T1MODH=0x12; T1MODL=0x00;
009F A612 lda #18
00A1 B723 sta 0x23
00A3 .dbline 71
00A3 3F24 clr 0x24
00A5 .dbline 73
00A5 ; //允许定时器1计数寄存器计数
00A5 ; T1SC&=~(1<<TSTOPBit);
00A5 1B20 bclr #5,0x20
00A7 .dbline -2
00A7 L18:
00A7 .dbline 0 ; func end
00A7 81 rts
00A8 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -