📄 main.s
字号:
.module main.c
.area data
_LCD_buff_fresh::
.blkb 1
.area idata
.byte 0
.area data
_LCD_buff1::
.blkb 1
.area idata
.byte 0
.area data
.area lit
_Key_show::
.byte 49,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,53,50,51,'H,'z,32,32,32,32,32,32,32,32,32
.byte 50,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,53,53,56,'H,'z,32,32,32,32,32,32,32,32,32
.byte 51,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,54,54,48,'H,'z,32,32,32,32,32,32,32,32,32
.byte 52,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,54,57,56,'H,'z,32,32,32,32,32,32,32,32,32
.byte 53,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,55,56,52,'H,'z,32,32,32,32,32,32,32,32,32
.byte 54,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,56,56,48,'H,'z,32,32,32,32,32,32,32,32,32
.byte 55,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32,32
.byte 'f,61,57,56,56,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,49,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,50,54,50,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,50,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,50,57,52,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,51,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,51,51,48,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,52,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,51,52,57,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,53,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,51,57,50,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,54,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,52,52,48,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'L,55,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,52,57,52,'H,'z,32,32,32,32,32,32,32,32,32
.byte 'H,49,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,48,52,54,'H,'z,32,32,32,32,32,32,32,32
.byte 'H,50,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,49,55,53,'H,'z,32,32,32,32,32,32,32,32
.byte 'H,51,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,51,49,56,'H,'z,32,32,32,32,32,32,32,32
.byte 'H,52,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,51,57,55,'H,'z,32,32,32,32,32,32,32,32
.byte 'H,53,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,53,54,56,'H,'z,32,32,32,32,32,32,32,32
.byte 'H,54,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,55,54,48,'H,'z,32,32,32,32,32,32,32,32
.byte 'H,55,32,'i,'s,32,'p,'r,'e,'s,'s,'e,'d,32,32,32
.byte 'f,61,49,57,55,54,'H,'z,32,32,32,32,32,32,32,32
.area text
; key_value -> 0,X
_main::
ais #-1
tsx
; /*-------------------键盘实验--------------------------*
; *文 件 名:Keyboard.c *
; *硬件连接:PTA.7-4接键盘4根列线,PTA.3-0接键盘4根行线 *
; *程序描述:按下键盘按键,串口发送对应的键值 *
; *目 的:键盘扫描,键盘中断,键值识别,键盘编码 *
; *注 意:如果键盘插在实验板上排插孔,无须连线,若插在下 *
; * 排插孔,需手工接线 *
; *-------《嵌入式应用技术基础教程》教学实例------------*/
; /*[头文件]*/
; #include "GP32C.H"
; #include "KB.h" //键盘中断头文件
; #include "KeyBoard_define.h"
; #define MCLK 2457600
;
;
; char Play_Sound(unsigned char key);
; void PWMInit(unsigned int Period);
; void Key_handle(unsigned char key);
; extern void lcdshow(unsigned char str[]);
; extern unsigned char KB_Scan(void);
;
; unsigned char LCD_buff_fresh=0,LCD_buff1=0;
;
;
; const unsigned char Key_show[21][32]={
; "1 is pressed f=523Hz ",
; "2 is pressed f=558Hz ",
; "3 is pressed f=660Hz ",
; "4 is pressed f=698Hz ",
; "5 is pressed f=784Hz ",
; "6 is pressed f=880Hz ",
; "7 is pressed f=988Hz ",
; "L1 is pressed f=262Hz ",
; "L2 is pressed f=294Hz ",
; "L3 is pressed f=330Hz ",
; "L4 is pressed f=349Hz ",
; "L5 is pressed f=392Hz ",
; "L6 is pressed f=440Hz ",
; "L7 is pressed f=494Hz ",
; "H1 is pressed f=1046Hz ",
; "H2 is pressed f=1175Hz ",
; "H3 is pressed f=1318Hz ",
; "H4 is pressed f=1397Hz ",
; "H5 is pressed f=1568Hz ",
; "H6 is pressed f=1760Hz ",
; "H7 is pressed f=1976Hz "
; };
;
;
; /*[主程序]*/
; void main()
; {
; unsigned char key_value;
; asm("SEI"); //关总中断
SEI
; KB_Init();
jsr _KB_Init
tsx
bra L3
L2:
jsr _KB_Scan
tsx
sta *__r1
sta ,X
psha
jsr _Play_Sound
ais #1
tsx
L3:
; //INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=1)
; //asm("CLI"); //开总中断
; //主循环
; while(1)
bra L2
X0:
L1:
ais #1
.dbline 0 ; func end
rts
.area lit
L8:
.byte 'N,'o,32,'v,'a,'l,'i,'d,32,'k,'e,'y,32,'i,'s,32
.byte 'b,'e,32,'p,'r,'e,'s,'s,33,32,32,32,32,32,32,32
.area text
; LCD_buff -> 0,X
; backup_DDRD -> 32,X
; key -> 35,X
_Play_Sound::
ais #-33
tsx
; {
; key_value=KB_Scan();
; Play_Sound(key_value);
; }
; }
;
; char Play_Sound(unsigned char key)
; {
; char backup_DDRD;
; if(key==0xff)
lda 35,X
cmp #-1
bne L6
; {
; unsigned char LCD_buff[32]="No valid key is be press! ";
sthx *__r0
lda #32
psha
clra
psha
lda #<L8
psha
lda #>L8
psha
lda *__r1
psha
lda *__r0
psha
jsr __asgnblk
ais #6
; T1SC=0x38;
lda #56
sta 0x20
; T1SC0=0b00100010;
lda #34
sta 0x25
; T1SC|= 0b00100000; //stop Timer
bset #5,0x20
; LCD_buff_fresh++;
inc *_LCD_buff_fresh
; if(LCD_buff_fresh%255==0)
lda *_LCD_buff_fresh
ldx #-1
clrh
div
pshh
pula
tsx
tsta
bne L9
; {
; lcdshow((unsigned char *)LCD_buff);
pshx
pshh
jsr _lcdshow
ais #2
tsx
; }
L9:
; LCD_buff1=1;
lda #1
sta *_LCD_buff1
; return 1; //do something and return!!!
lda #1
jmp L5
L6:
; }
;
; else
; {
; switch(key) //do something and return
clr 30,X
lda 35,X
sta 31,X
lda 30,X
bne X1
lda 31,X
cmp #-91
bne X23
jmp L26
X23:
X1:
lda 30,X
bne X2
lda 31,X
cmp #-90
bne X24
jmp L23
X24:
X2:
lda 31,X
sta *__r1
lda 30,X
sta *__r0
ldhx *__r0
cphx #166
tsx
ble X25
jmp L36
X25:
L35:
lda 30,X
bne X3
lda 31,X
cmp #69
bne X26
jmp L31
X26:
X3:
lda 30,X
bne X4
lda 31,X
cmp #70
bne X27
jmp L28
X27:
X4:
lda 31,X
sta *__r1
lda 30,X
sta *__r0
ldhx *__r0
cphx #70
tsx
bgt L38
L37:
lda 30,X
bne X5
lda 31,X
cmp #49
bne X28
jmp L14
X28:
X5:
lda 30,X
bne X6
lda 31,X
cmp #50
bne X29
jmp L15
X29:
X6:
lda 30,X
bne X7
lda 31,X
cmp #51
bne X30
jmp L16
X30:
X7:
lda 30,X
bne X8
lda 31,X
cmp #52
bne X31
jmp L17
X31:
X8:
lda 30,X
bne X9
lda 31,X
cmp #53
bne X32
jmp L18
X32:
X9:
lda 30,X
bne X10
lda 31,X
cmp #54
bne X33
jmp L19
X33:
X10:
lda 30,X
bne X11
lda 31,X
cmp #55
bne X34
jmp L20
X34:
X11:
jmp L12
L38:
lda 30,X
bne X12
lda 31,X
cmp #-107
bne X35
jmp L33
X35:
X12:
lda 30,X
bne X13
lda 31,X
cmp #-106
bne X36
jmp L30
X36:
X13:
jmp L12
L36:
lda 30,X
bne X14
lda 31,X
cmp #-43
bne X37
jmp L32
X37:
X14:
lda 30,X
bne X15
lda 31,X
cmp #-42
bne X38
jmp L29
X38:
X15:
lda 31,X
sta *__r1
lda 30,X
sta *__r0
ldhx *__r0
cphx #214
tsx
bgt L40
L39:
lda 30,X
bne X16
lda 31,X
cmp #-61
bne X39
jmp L34
X39:
X16:
lda 30,X
bne X17
lda 31,X
cmp #-59
bne X40
jmp L25
X40:
X17:
lda 30,X
bne X18
lda 31,X
cmp #-58
bne X41
jmp L22
X41:
X18:
jmp L12
L40:
lda 30,X
bne X19
lda 31,X
cmp #-29
bne X42
jmp L27
X42:
X19:
lda 30,X
bne X20
lda 31,X
cmp #-27
bne X43
jmp L24
X43:
X20:
lda 30,X
bne X21
lda 31,X
cmp #-26
beq L21
X21:
jmp L12
X22:
; {
L14:
; case '1':Key_handle('1');break;
lda #49
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L15:
; case '2':Key_handle('2');break;
lda #50
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L16:
; case '3':Key_handle('3');break;
lda #51
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L17:
; case '4':Key_handle('4');break;
lda #52
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L18:
; case '5':Key_handle('5');break;
lda #53
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L19:
; case '6':Key_handle('6');break;
lda #54
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L20:
; case '7':Key_handle('7');break;
lda #55
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L21:
; case L1:Key_handle(L1);break;
lda #-26
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L22:
; case L2:Key_handle(L2);break;
lda #-58
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L23:
; case L3:Key_handle(L3);break;
lda #-90
psha
jsr _Key_handle
ais #1
tsx
jmp L12
L24:
; case L4:Key_handle(L4);break;
lda #-27
psha
jsr _Key_handle
ais #1
tsx
bra L12
L25:
; case L5:Key_handle(L5);break;
lda #-59
psha
jsr _Key_handle
ais #1
tsx
bra L12
L26:
; case L6:Key_handle(L6);break;
lda #-91
psha
jsr _Key_handle
ais #1
tsx
bra L12
L27:
; case L7:Key_handle(L7);break;
lda #-29
psha
jsr _Key_handle
ais #1
tsx
bra L12
L28:
; case H1:Key_handle(H1);break;
lda #70
psha
jsr _Key_handle
ais #1
tsx
bra L12
L29:
; case H2:Key_handle(H2);break;
lda #-42
psha
jsr _Key_handle
ais #1
tsx
bra L12
L30:
; case H3:Key_handle(H3);break;
lda #-106
psha
jsr _Key_handle
ais #1
tsx
bra L12
L31:
; case H4:Key_handle(H4);break;
lda #69
psha
jsr _Key_handle
ais #1
tsx
bra L12
L32:
; case H5:Key_handle(H5);break;
lda #-43
psha
jsr _Key_handle
ais #1
tsx
bra L12
L33:
; case H6:Key_handle(H6);break;
lda #-107
psha
jsr _Key_handle
ais #1
tsx
bra L12
L34:
; case H7:Key_handle(H7);break;
lda #-61
psha
jsr _Key_handle
ais #1
tsx
; default: ;break;
L12:
; }
; LCD_buff_fresh=1;
lda #1
sta *_LCD_buff_fresh
; return 1;
lda #1
L5:
ais #33
.dbline 0 ; func end
rts
; Temp -> 0,X
; Period -> 4,X
_PWMInit::
ais #-2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -