kulam keypad decoder problema

Z

zhi_yi

Guest
Hi there, please help me

ako na gumawa ng isang 4x4 kulam decoder gamit at89s2051, matapos ako ginawa sa programa, i tried ito sa at89s52, at ito
ay sa trabaho, ngunit kapag ako tried sa isulat ang hex file sa at89s2051 at tried ito sa circuit, ito ay hindi gumagana , ako gumamit ng asm wika,
ako ay nabago ang header sa $ MOD2051, ang resulta ay pa rin ng ilang mga error na nangyari, habang ako pindutin ang pindutan ng 0 hanggang 7, ito
ay sa trabaho, ngunit mula sa 8 na F ang mga error na nangyari.masiyahan tumulong ako.

anumang tumutulong ay appreciated.

salamat

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />
 
Siguro na ginamit mo ang isang bagay na mayroon sa 89C52 at hindi na umiiral sa 89C2051 ..Matapos ang lahat ng 89C2051 ay nabawasan ang mga bersyon ng 51 - hindi sa banggitin 52 ..

Puwede bang mag-post ang iyong code?

Pagbati,
IanP

 
siyempre, dito ay ang code, maaring makatulong sa akin kung saan ay ang mga pagkakamali ..habang ako pindutin sa keypad 0 hanggang 7, ito
ay gumagana sa hindi mga error, ngunit hanggang 7, ang output palaging 1010

$ MOD2051
$ OBJECT

ROW0 EQU P1.0
ROW1 EQU P1.1
ROW2 EQU P1.2
ROW3 EQU P1.3

Alert EQU P3.7

Org 00H
AJMP START

START:
SETB Alert
;------------------------------- Maghintay Hanggang key pinakawalan -------------- -----------------------------
MAIN1:
MOV P1, # 0F0H
MOV A, P1
ANL A, # 11110000B
CJNE A, # 11110000B, MAIN1
;------------------------------- Maghintay Hanggang key pinindot -------------- ------------------------------
LOOP1:
ACALL Delay
MOV A, P1
ANL A, # 11110000B
CJNE A, # 11110000B, CHECK_BOUNCE
AJMP LOOP1
CHECK_BOUNCE:
ACALL Delay
MOV A, P1
ANL A, # 11110000B
CJNE A, # 11110000B, CHECK_BARIS
AJMP LOOP1
;------------------------------------- Scan BARIS ---------- ---------------------------------------
CHECK_BARIS:
CLR ROW0
SETB ROW1
SETB ROW2
SETB ROW3

MOV A, P1
ANL A, # 11111110B
CJNE A, # 11111110B, BARIS_0

;------------------------------------------------- -----------------------------------------------
SETB ROW0
CLR ROW1
SETB ROW2
SETB ROW3

MOV A, P1
ANL A, # 11111101B
CJNE A, # 11111101B, BARIS_1; CEK Hilera 1
;------------------------------------------------- -----------------------------------------------
SETB ROW0
SETB ROW1
CLR ROW2
SETB ROW3

MOV A, P1
ANL A, # 11111011B
CJNE A, # 11111011B, BARIS_2; CEK Hilera 2
;------------------------------------------------- -----------------------------------------------
SETB ROW0
SETB ROW1
SETB ROW2
CLR ROW3

MOV A, P1
ANL A, # 11110111B
CJNE A, # 11110111B, BARIS_3; CEK Hilera 3
AJMP LOOP1
;------------------------------------------------- -----------------------------------------------
BARIS_0:
MOV DPTR, # ISI_ROW0
AJMP FIND_CLMN
BARIS_1:
MOV DPTR, # ISI_ROW1
AJMP FIND_CLMN
BARIS_2:
MOV DPTR, # ISI_ROW2
AJMP FIND_CLMN
BARIS_3:
MOV DPTR, # ISI_ROW3
AJMP FIND_CLMN
;------------------------------------------------- -----------------------------------------------

FIND_CLMN:
RLC A
JNC Found
Inc DPTR
AJMP FIND_CLMN
;------------------------------------------------- -----------------------------------------------
Natagpuan:
MOV A, # 00H
MOVC A, @ A DPTR
MOV P3, A
; MOV P0, A
CLR Alert
ACALL Delay
ACALL Delay
ACALL Delay
SETB Alert
LJMP START
;------------------------------------- Delay ----------- -------------------------------------------
Delay:
MOV R0, # 36
DELAY1:
MOV R1, # 0FFH
DJNZ R1, $
DJNZ R0, DELAY1
Magpabasa
;------------------------------------ Tukuyin DATA ----------- --------------------------------------

Org 350H
ISI_ROW0: DB 0H, 1H, 2H, 3H
ISI_ROW1: DB 4H, 5H, 6H, 7H
ISI_ROW2: DB 8H, 9H, 0AH, 0BH
ISI_ROW3: DB 0CH, 0DH, 0EH, 0FH

END

 
Sa pangkalahatan, hindi mo problema sa software ..
Habang ikaw ay may sinabi, sa 89C52 ito manggagawa pagmultahin ..
Saanman sa code na gamitin P3 - Hindi sa tingin mo ay maaaring gumamit ng P3 bilang isang PORT ..
Sa halip ng paggamit ng MOV P3, A subukan sa paghahalili bits (sa pamamagitan ng C-bandila) ACC.0 sa P3.0, ACC.1 sa P3.1 at iba pa ..

Pagbati,
IanP

 
salamat,
ako ay nagbago ng "mov p3, ang isang" sa mga code gamit carry bandila:

Natagpuan:
Isang MOV, # 00H
MOVC A, @ A DPTR

BIT3A:
RRC A
JNC BIT3
SETB P3.0
JMP BIT2A
BIT3:
CLR P3.0
BIT2A:
RRC A
JNC BIT2
SETB P3.1
JMP BIT1A
BIT2:
CLR P3.1
BIT1A:
RRC A
JNC BIT1
SETB P3.2
JMP BIT0A
BIT1:
CLR P3.2
BIT0A:
RRC A
JNC BIT0
SETB P3.3
JMP asdf
BIT0:
CLR P3.3

Asdf:

CLR Alert
ACALL Delay
ACALL Delay
ACALL Delay
SETB Alert
LJMP START

ngunit ang mga resulta ay pa rin ang parehong, ito
ay gumagana multa mula sa 0 hanggang 7, ngunit mula sa 8 na F may ilang mga error na naganap.ito ay dahil sa pin port 1.1 at 1.0 ay maaaring gumagamit ng bilang analog comparator, at ito apektado sa aking hilera-i-scan ng circuit?kung paano gamitin ang port 1.1 (AIN1) at port 1.0 (AIN0) bilang digital input / output?

maraming salamat

 
Tila ito ay hindi na software na may kinalaman ang problema ..
Ang gayon, ay nagbibigay-daan sa subukin ito:
Port 1 ay isang 8-bit bi-itinuro I / O port ..
Port mapakali P1.2 sa P1.7 magbigay ng panloob na mga pull-ups ..
..

P1.0 at P1.1 ay nangangailangan ng panlabas na mga pull-ups

..
Mayroon ba kayong mga ito?
Kung hindi, ikonekta 4.7kΩ - 10kΩ pull-ups at subukan muli ..

Pagbati,
IanP

 
i gave huhugutin risistor sa mga port, at ang paligid na gumagana ng mabuti,

maraming salamat

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />--- Bless Ikaw

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Ngiti" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top