📄 main.s
字号:
.module main.c
.area data
_FLine::
.blkb 1
.area idata
.byte 0
.area data
.dbfile main.c
.dbsym e FLine _FLine c
_LcdShowBuff::
.blkb 64
.area idata
.byte 203,213,214,221,180,243,209,167,32,32,32,32,32,32,32,32
.byte 181,165,198,172,187,250,202,181,209,233,202,210,32,32,32,32
.byte 'h,'t,'t,'p,58,47,47,'s,'u,'m,'c,'u,46,'s,32,32
.byte 'u,'d,'a,46,'e,'d,'u,46,'c,'n,32,32,32,32,32,32
.area data
.dbfile main.c
.dbsym e LcdShowBuff _LcdShowBuff A[64:64]c
.area text
.dbfile main.c
.dbfunc e main _main fV
; RF -> 0,X
; LN -> 2,X
_main::
.dbline -1
ais #-3
tsx
.dbline 31
; /*-----------------------------------------------------*
; *工 程 名:TG12864E02.prj *
; *硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接 *
; * 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接 *
; * 功 能:初始时显示:"苏州大学 " *
; * "单片机实验室 " *
; * "http://sumcu.s " *
; * "uda.edu.cn " *
; *-----------------------------------------------------*/
;
; /*[头文件]*/
; #include "GP32C.h" //映像寄存器地址头文件
; #include "lcd.h" //Lcd头文件
; #include "SCI.h" //SCI头文件
; //有关定时器寄存器位定义
; #define TSTOPBit 5 //定时器计数停止位
; //定时器初始化函数声明
; void Timer1init(void);
; //SCI初始化
; extern void SCIInit(void);
; //全局变量声明
; unsigned char FLine=0; //得到焦点的行号
; //[外部定义64个字节的Lcd显示缓冲区]
; unsigned char LcdShowBuff[64]="苏州大学 "
; "单片机实验室 "
; "http://sumcu.s "
; "uda.edu.cn ";
; //*====================================================*
; /*[主函数]*/
; void main()
; {
.dbline 34
; unsigned char *RF; //接收标志
; unsigned char LN; //行号标志
; asm("SEI"); //关总中断
SEI
.dbline 35
; Timer1init(); //调定时器1初始化子程序
jsr _Timer1init
.dbline 36
; Lcdinit(); //Lcd初始化
jsr _Lcdinit
.dbline 37
; SCIInit(); //SCI初始化
jsr _SCIInit
tsx
.dbline 38
; asm("CLI"); //开总中断
CLI
jmp L3
L2:
.dbline 42
; //[主循环]
; //循环等待接收
; while(1)
; {
.dbline 43
; SCISend1(86);
lda #86
psha
jsr _SCISend1
ais #1
tsx
.dbline 44
; if(SCIRe1(RF)!=56) continue;
lda 1,X
psha
lda ,X
psha
jsr _SCIRe1
ais #2
tsx
sta *__r1
cmp #56
beq L5
.dbline 44
bra L3
L5:
.dbline 45
; LN=SCIRe1(RF);
lda 1,X
psha
lda ,X
psha
jsr _SCIRe1
ais #2
tsx
sta *__r1
sta 2,X
.dbline 46
; if(LN==1) //将接收到的数据放在第一行显示缓冲区
cmp #1
bne L7
.dbline 47
; SCIReN(16,LcdShowBuff);
ldhx #_LcdShowBuff
pshx
pshh
lda #16
psha
jsr _SCIReN
ais #3
tsx
bra L8
L7:
.dbline 48
; else if(LN==2)//将接收到的数据放在第二行显示缓冲区
lda 2,X
cmp #2
bne L9
.dbline 49
; SCIReN(16,LcdShowBuff+16);
ldhx #_LcdShowBuff+16
pshx
pshh
lda #16
psha
jsr _SCIReN
ais #3
tsx
bra L10
L9:
.dbline 50
; else if(LN==3)//将接收到的数据放在第三行显示缓冲区
lda 2,X
cmp #3
bne L12
.dbline 51
; SCIReN(16,LcdShowBuff+32);
ldhx #_LcdShowBuff+32
pshx
pshh
lda #16
psha
jsr _SCIReN
ais #3
tsx
bra L13
L12:
.dbline 52
; else if(LN==4)//将接收到的数据放在第四行显示缓冲区
lda 2,X
cmp #4
bne L15
.dbline 53
; SCIReN(16,LcdShowBuff+48);
ldhx #_LcdShowBuff+48
pshx
pshh
lda #16
psha
jsr _SCIReN
ais #3
tsx
L15:
L13:
L10:
L8:
.dbline 54
L3:
.dbline 41
jmp L2
X0:
.dbline -2
L1:
ais #3
.dbline 0 ; func end
rts
.dbsym l RF 0 pc
.dbsym l LN 2 c
.dbend
.dbfunc e Timer1init _Timer1init fV
_Timer1init::
.dbline -1
.dbline 64
; }
; }
;
; /*[内部直接调用子程序存放处]*/
; /*Timer1init:定时器1初始化子程序-----------------------*
; *功能:对定时器1初始化 *
; *参数:无 *
; *返回:无 *
; *-----------------------------------------------------*/
; void Timer1init(void)
; {
.dbline 66
; //允许溢出中断、不启动计数、分频因子=64
; T1SC=0b01100110;
lda #102
sta 0x20
.dbline 68
; //计数寄存器初值=0x0000
; T1CNTH=0x00; T1CNTL=0x00;
clr 0x21
.dbline 68
clr 0x22
.dbline 71
; //1/2秒产生1次溢出中断
; //计数寄存器=1/2×(2457600/64)=1200
; T1MODH=0x12; T1MODL=0x00;
lda #18
sta 0x23
.dbline 71
clr 0x24
.dbline 73
; //允许定时器1计数寄存器计数
; T1SC&=~(1<<TSTOPBit);
bclr #5,0x20
.dbline -2
L18:
.dbline 0 ; func end
rts
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -