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

📄 ps2kb_uart.s

📁 meg16 的所有功能实例
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module PS2KB_UART.c
	.area lit(rom, con, rel)
_UnShifted::
	.byte 28,'a
	.byte 50,'b
	.byte 33,'c
	.byte 35,'d
	.byte 36,'e
	.byte 43,'f
	.byte 52,'g
	.byte 51,'h
	.byte 'C,'i
	.byte 59,'j
	.byte 'B,'k
	.byte 'K,'l
	.byte 58,'m
	.byte 49,'n
	.byte 'D,'o
	.byte 'M,'p
	.byte 21,'q
	.byte 45,'r
	.byte 27,'s
	.byte 44,'t
	.byte 60,'u
	.byte 42,'v
	.byte 29,'w
	.byte 34,'x
	.byte 53,'y
	.byte 26,'z
	.byte 'E,48
	.byte 22,49
	.byte 30,50
	.byte 38,51
	.byte 37,52
	.byte 46,53
	.byte 54,54
	.byte 61,55
	.byte 62,56
	.byte 'F,57
	.byte 14,96
	.byte 'N,45
	.byte 'U,61
	.byte 93,92
	.byte 41,32
	.byte 'T,91
	.byte 91,93
	.byte 'L,59
	.byte 'R,39
	.byte 'A,44
	.byte 'I,46
	.byte 'J,47
	.byte 'q,46
	.byte 'p,48
	.byte 'i,49
	.byte 'r,50
	.byte 'z,51
	.byte 'k,52
	.byte 's,53
	.byte 't,54
	.byte 'l,55
	.byte 'u,56
	.byte 125,57
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART/scancodes.h
	.dbsym e UnShifted _UnShifted A[118:59:2]kc
_Shifted::
	.byte 28,'A
	.byte 50,'B
	.byte 33,'C
	.byte 35,'D
	.byte 36,'E
	.byte 43,'F
	.byte 52,'G
	.byte 51,'H
	.byte 'C,'I
	.byte 59,'J
	.byte 'B,'K
	.byte 'K,'L
	.byte 58,'M
	.byte 49,'N
	.byte 'D,'O
	.byte 'M,'P
	.byte 21,'Q
	.byte 45,'R
	.byte 27,'S
	.byte 44,'T
	.byte 60,'U
	.byte 42,'V
	.byte 29,'W
	.byte 34,'X
	.byte 53,'Y
	.byte 26,'Z
	.byte 'E,41
	.byte 22,33
	.byte 30,64
	.byte 38,35
	.byte 37,36
	.byte 46,37
	.byte 54,94
	.byte 61,38
	.byte 62,42
	.byte 'F,40
	.byte 14,126
	.byte 'N,95
	.byte 'U,43
	.byte 93,124
	.byte 41,32
	.byte 'T,123
	.byte 91,125
	.byte 'L,58
	.byte 'R,34
	.byte 'A,60
	.byte 'I,62
	.byte 'J,63
	.byte 'q,46
	.byte 'p,48
	.byte 'i,49
	.byte 'r,50
	.byte 'z,51
	.byte 'k,52
	.byte 's,53
	.byte 't,54
	.byte 'l,55
	.byte 'u,56
	.byte 125,57
	.dbsym e Shifted _Shifted A[118:59:2]kc
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART/scancodes.h
_keycode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART/scancodes.h
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbsym e keycode _keycode c
_step::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbsym e step _step c
_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbsym e flag _flag c
_Key_UP:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbsym s Key_UP _Key_UP c
_Shift:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbsym s Shift _Shift c
_BF:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbsym s BF _BF c
	.area text(rom, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 53
; /****************************************Copyright (c)**************************************************
; **                               ADEmbed Development Co.,LTD.                                    
; **                                 http://www.adembed.com
; **--------------File Info-------------------------------------------------------------------------------
; ** File name:			ps2KB_UART.c
; ** Last modified Date:  2008-12-13
; ** Last Version:		1.0
; ** Descriptions:		ps2 test.
; ** 
; **------------------------------------------------------------------------------------------------------
; ** Created by:			junbolu
; ** Created date:		2008-12-13
; ** Version:				1.0
; ** Descriptions:		
; **
; **------------------------------------------------------------------------------------------------------
; ** Modified by:
; ** Modified date:
; ** Version:
; ** Descriptions:
; **
; **------------------------------------------------------------------------------------------------------
; **ICC-AVR application builder : 2008-12-13
; **Target : M16
; **Crystal: 7.3728Mhz
; **SCK   ----  INT1
; **DATA  ----  PD3  
; **描述:读取PS2键盘编码,并且解码以后发送到串口显示。
; **      
; **
; **涉及知识点:
; **          
; **          
; **          
; *******************************************************************************************************/
; 
; #include<iom16v.h>
; #include<macros.h>
; #include "scancodes.h"
; 
; #define BAUD  9600
; #define BARR  (7372800/(16*BAUD)-1)
; 
; 
; volatile unsigned char keycode=0;
; volatile unsigned char step=0;
; volatile char flag=0;
; 
; static unsigned char Key_UP=0, Shift = 0;//Key_UP是键松开标识,Shift是Shift键按下标识
; static unsigned char BF = 0; //标识是否有字符被收到
; 
; void port_init(void)
; {
	.dbline 54
; 	DDRD =  0Xe7;
	ldi R24,231
	out 0x11,R24
	.dbline 55
;     PORTD = 0XFF;
	ldi R24,255
	out 0x12,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e UART_init _UART_init fV
	.even
_UART_init::
	.dbline -1
	.dbline 60
; 
; }
; 
; void UART_init( void )
; {
	.dbline 61
; 	UBRRH = (unsigned char)(BARR>>8);
	clr R2
	out 0x20,R2
	.dbline 62
; 	UBRRL = (unsigned char)BARR;
	ldi R24,47
	out 0x9,R24
	.dbline 63
; 	UCSRB = (1<<RXEN)|(1<<TXEN);
	ldi R24,24
	out 0xa,R24
	.dbline 64
; 	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);       
	ldi R24,134
	out 0x20,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_transmit _uart_transmit fV
;           data -> R16
	.even
_uart_transmit::
	.dbline -1
	.dbline 68
; }
; 
; void uart_transmit(unsigned char data)
; {
L4:
	.dbline 69
L5:
	.dbline 69
; 	while(!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L4
	.dbline 71
; 	
; 	UDR = data;
	out 0xc,R16
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e uart_trans_str _uart_trans_str fV
;              s -> R20,R21
	.even
_uart_trans_str::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 75
; }
; 
; void uart_trans_str(unsigned char *s)
; {
	xjmp L9
L8:
	.dbline 77
	.dbline 78
	movw R30,R20
	ldd R16,z+0
	xcall _uart_transmit
	.dbline 79
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 80
L9:
	.dbline 76
;  	while(*s)
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L8
	.dbline -2
L7:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r s 20 pc
	.dbend
	.area vector(rom, abs)
	.org 8
	jmp _int1_scr
	.area text(rom, con, rel)
	.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
	.dbfunc e int1_scr _int1_scr fV
	.even
_int1_scr::
	st -y,R2
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 84
; 	{
; 	 uart_transmit(*s);
; 	 s++;
; 	}
; }
; #pragma interrupt_handler int1_scr:3
; void int1_scr(void)
; {
	.dbline 85
; 	step++;
	lds R24,_step
	subi R24,255    ; addi 1
	sts _step,R24
	.dbline 87
; 	
; 	if(step==1)
	lds R24,_step
	cpi R24,1
	brne L12
	.dbline 88
; 	{
	.dbline 89
; 		if((PIND&0X10)==1)
	in R24,0x10
	andi R24,16
	cpi R24,1
	brne L13
	.dbline 90
; 		{
	.dbline 91
; 			step = 0;
	clr R2
	sts _step,R2
	.dbline 92
; 		}
	.dbline 93
; 	}
	xjmp L13
L12:
	.dbline 94
; 	else if((step>=2)&&(step<=9))
	lds R24,_step
	cpi R24,2
	brlo L16
	ldi R24,9
	lds R2,_step
	cp R24,R2
	brlo L16
	.dbline 95
; 	{	
	.dbline 96
; 		keycode>>=1;
	lds R2,_keycode
	lsr R2
	sts _keycode,R2
	.dbline 98
; 		
; 		if((PIND&0X10)==0)
	sbic 0x10,4
	rjmp L18
	.dbline 99
; 		{
	.dbline 100
; 			keycode|=0x00;
	lds R2,_keycode
	sts _keycode,R2
	.dbline 101
; 		}
	xjmp L17
L18:
	.dbline 103
; 		else 
; 		{
	.dbline 104
; 			keycode|=0x80;
	lds R24,_keycode
	ori R24,128
	sts _keycode,R24
	.dbline 105
; 		}	   
	.dbline 106
; 	}
	xjmp L17
L16:
	.dbline 107
; 	else if(step == 11)
	lds R24,_step
	cpi R24,11
	brne L20
	.dbline 108
; 	{
	.dbline 109
; 		flag = 1;
	ldi R24,1
	sts _flag,R24
	.dbline 110
; 		step = 0;
	clr R2
	sts _step,R2
	.dbline 111
; 	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -