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

📄 main.s

📁 这是我做课程设计时自己做的,用摩托罗位的飞思卡尔单片机做的,包括了对键盘复键的处理
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -