bascom

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

bascom

Mensagempor anderson bertolo » 12 Fev 2008 19:02

Olá a todos

Gostaria de saber se alguem que programa em Bascom e usa o AT89c51ed2 conseguiu configurar a interrupção da interface keyboard.

obrigado
anderson bertolo
Bit
 
Mensagens: 20
Registrado em: 28 Nov 2006 23:18

Mensagempor LeandroPIC » 13 Fev 2008 11:38

Faz o tratamento do teclado no braço que é bem menhor que esse pronto do Bascom, pois tem teclas que não funcionan e outras que não presisaria funcionar e funcionam, vc coloca o clock do teclado em um pino que gera a INT e faz um programa que trate ele, no Google vc acha informações de Pilha sobre Keyboard de PC.
Avatar do usuário
LeandroPIC
Byte
 
Mensagens: 163
Registrado em: 06 Jul 2007 12:19

Mensagempor anderson bertolo » 14 Fev 2008 08:22

Olá Leandro

Valeu pela dica.

abraço
anderson bertolo
Bit
 
Mensagens: 20
Registrado em: 28 Nov 2006 23:18

Mensagempor tcpipchip » 14 Fev 2008 09:15

OLA, AQUELAS ROTINAS DO BASCOM FUNCIONAM!!!!

EM 1998 EU FIZ UM TERMINAL QUE VIA TCP/IP DISCADO QUE ENTRAVA EM CHATS IRC

USE O CONTROLADOR DE TECLADO DA HOLTEK MAIS O 89C52 COM AS ROTINAS EM BASCOM

QUEM DIZER O CODIGO COMPLETACO, MANDA UM E-MAIL PARA

tcpipchip@hotmail.com
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor simplicio » 15 Fev 2008 00:51

Encontrei sua resposta:

1º Crie um arquivo com o nome: 89C51ED2.dat e salve na pasta C:\...\MCS Electronics\BASCOM8051. Com o seguinte conteúdo:
89c51ed2.dat
[BIT]
ACC = E0 , 00
B = F0 , 00
CCON = D8,00
IE = A8 , 00
IP = B8 , 00
P0 = 80 , FF
P1 = 90 , FF
P2 = A0 , FF
P3 = B0 , FF
IPL0 = B8 , 00
P4 = C0 , FF
PSW = D0 , 00
SCON = 98 , 00
TCON = 88 , 00
T2CON = C8 , 00
PI2 = F8 , 03

[BYTE]
SP = 81 , 07
DPL = 82 , 00
DPH = 83 , 00
PCON = 87 , 10
TMOD = 89 , 00
TL0 = 8A , 00
TL1 = 8B , 00
TH0 = 8C , 00
TH1 = 8D , 00
AUXR = 8E , 10
CKCON0 = 8F , 00
CKRL = 97 , FF
SBUF = 99 , 00
BRL = 9A , 00
BDRCON = 9B , 00
KBLS = 9C , 00
KBE = 9D , 00
KBF = 9E , 00
AUXR1 = A2 , 00
WDTRST = A6 , 00
WDTPRG = A7 ,00
SADDR = A9 , 00
CKCON1 = AF , 00
IEN1 = B1 , 00
IPL1 = B2 , 00
IPH1 = B3 , 07
IPH0 = B7 , 00
SADEN = B9 , 00
SPCON = C3 , 14
SPSTA = C4 , 00
SPDAT = C5 , 00
T2MOD = C9 , 00
RCAP2L = CA , 00
RCAP2H = CB , 00
TL2 = CC , 00
TH2 = CD , 00
FCON = D1 ,00
WMCON = D2 , 00
CMOD = D9 , 00
CCAPM0 = DA,00
CCAPM1 = DB,00
CCAPM2 = DC,00
CCAPM3 = DD,00
CCAPM4 = DE,00
CL = E9,00
CCAP0L = EA,00
CCAP1L = EB,00
CCAP2L = EC,00
CCAP3L = ED,00
CCAP4L = EE,00
CH = F9,00
CCAP0H = FA,00
CCAP1H = FB,00
CCAP2H = FC,00
CCAP3H = FD,00
CCAP4H = FE,00

[MISC]
I_TIMER2 = 2B
I_PCA = 33
I_KBD = 3B
I_SPI = 4B
org = 4E
up = 89C51xED2
IRAM = 256
XRAM = 1792
CLOCKDIV=6




3º Selecione no BASCOM-8051 o menu option > compilers> output >MISC > 89C51ED2.dat , ou defina no seu programa:

$regfile = "89C51ED2.dat"



4º agora você poderá utilizar os seguintes comandos no seu programa:

On Kbd (LABEL)

....

'******** subrotina de interrupção *********

(LABEL):

Return

'***************************


exemplo:

On Kbd inter_keyboard

....

'******** subrotina de interrupção *********

inter_keyboard:

Return



Para demais interrupções, basta acrescentar no arquivo .dat o nome da interrupção mais seu endereço em hexadecimal, ex: I_teste = 5A , e no corpo do programa chamar esta interrupção apenas pelo seu nome: teste.


Abraço
Fernando Simplicio
simplicio
Nibble
 
Mensagens: 80
Registrado em: 09 Nov 2006 12:50

Mensagempor anderson bertolo » 16 Fev 2008 10:50

O Fernando obrigado pela ajuda.

Só para complementar as dicas do Fernando segue o codigo para deixar registrado.

abraço

'Enter Alias P1.0 'atribui ao pino p1.0 o pino tecla1
'Menu Alias P1.1 'atribui ao pino p1.1 o nome tecla2
'Incremento Alias P1.2 'atribui ao pino p1.2 o nome tecla3
'Decremento Alias P1.3 'atribui ao pino p1.3 o nome tecla4

Const Enter = 1
Const Menu = 2
const incrementa = 4
Const Decrementa = 8

Dim Keypressed As Byte
Dim Key_flag As Bit

Dim Aux As Byte

'============= configuração do display Lcd ===========================
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6 , Db7 = P2.7 , E = P2.3 , Rs = P2.1
Cls
Cursor Off

'============= configuração da interrupção do teclado ===========================
On Kbd Inter_keyboard

MOV KBE, #15; 'Enable P1.0 / P1.1 / P1.2 / P1.3
MOV KBF, #0; ' Clear all keyboard flags
ORL IEN1,#1; ' Enable keyboard interupt

Enable Interrupts

'============= inicio do programa ===========================
While 1 = 1

Locate 1 , 1
Lcd "AGUARDANDO " ; Keypressed

If Key_flag = 1 Then
If Keypressed = Enter Then
Locate 2 , 1
Lcd "enter "
End If
If Keypressed = Menu Then
Locate 2 , 1
Lcd "menu "
End If
If Keypressed = Incrementa Then
Locate 2 , 1
Lcd "incrementa"
End If
If Keypressed = Decrementa Then
Locate 2 , 1
Lcd "decrementa"
End If
Key_flag = 0
End If
Wend

'******** tratamento da interrupção *********
Inter_keyboard:
Keypressed = Kbf
Key_flag = 1
Kbf = 0
Return

End
anderson bertolo
Bit
 
Mensagens: 20
Registrado em: 28 Nov 2006 23:18


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x