Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] Simulated result not showing on board AT89s52 using Reads51

Status
Not open for further replies.

chi chung

Newbie level 3
Joined
Jan 14, 2012
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,377
hi, im trying to make a simple AT89S52 based POV, and it seems to work in the simulation under reads51 software. however after i made the board and programmed the chip it doesn't do anything all LEDs remain off.

i know the board is working fine because i programmed the chip to flash the LEDs and it seems to be working, but when i program the chip with the POV program it just does nothing. it works in the reads51 ide but not on the real thing? o.0

i think reads51 maybe compiling the hex wrong, im not sure..... can anyone suggest a 8051 assembly compiler thats free?

here is the code for all that like to have a try and see if thier compiler works.


/code
;************************************************************************
;Written By: Chi Chung Tsang *
;Project: Atmel AT89S52 POV *
;Description: a POV toy, waving this toy fast *
;enough you can see a messege or image from the *
;row of 8 LEDs. *
; *
;Note: messege can be change bellow. *
;****************The Circuit ********************************************
; *
; AT89S52 MCU *
; ____________________________ *
; | | *
; -|1 (p1.0) VDD 40|- VDD(5v) *
; -|2 (p1.1) (p0.0) 39|- *
; -|3 (p1.2) (p0.1) 38|- *
; -|4 (p1.3) (p0.2) 37|- *
; -|5 (p1.4) (p0.3) 36|- *
; -|6 (p1.5) (p0.4) 35|- *
; -|7 (p1.6) (p0.5) 34|- *
; -|8 (p1.7) (p0.6) 33|- *
;5v + 1uF - 4.7kohm -|9 RESET (p0.7) 32|- *
; -|10 (p3.0) EA/VPP 31|- 5v *
; -|11 (p3.1) ALE/PROG 30|- *
; -|12 (p3.2) PSEN 29|- *
; -|13 (p3.3) (p2.7) 28|- LED + 220ohm - 5v *
; -|14 (p3.4) (p2.6) 27|- LED + 220ohm - 5v *
; -|15 (p3.5) (p2.5) 26|- LED + 220ohm - 5v *
; -|16 (p3.6) (p2.4) 25|- LED + 220ohm - 5v *
; -|17 (p3.7) (p2.3) 24|- LED + 220ohm - 5v *
;0v - 35pF - 11.05mhz-|18 Xtal 1 (p2.2) 23|- LED + 220ohm - 5v *
;0v - 35pF - 11.05mhz-|19 Xtal 2 (p2.1) 22|- LED + 220ohm - 5v *
; (0v)VSS -|20 VSS (p2.0) 21|- LED + 220ohm - 5v *
; |____________________________| *
; *
; *
;************************************************************************

#include <8051.h>


;*********** BIT ADRESSESS, BYTE ADRESS FOR THIS BYTE IS 2F*************
RB0 EQU 7FH
RB1 EQU 7EH
RB2 EQU 7DH
RB3 EQU 7CH
RB4 EQU 7BH
RB5 EQU 7AH
RB6 EQU 79H
RB7 EQU 78H

ORG 0

START: CLR A
MOV R0, A ;WE USE REGISTER 0 FOR ROW COUNTER
ROW0P: MOV DPTR, #ROW0 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET0 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR0 ;JUMP TO CLEAR ROW 0 IF DATA IS 0

ROW1P: MOV DPTR, #ROW1 ;SET POINTER TO ROW 1
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET1 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR1 ;JUMP TO CLEAR ROW 0 IF DATA IS 0


ROW2P: MOV DPTR, #ROW2 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET2 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR2 ;JUMP TO CLEAR ROW 0 IF DATA IS 0

ROW3P: MOV DPTR, #ROW3 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET3 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR3 ;JUMP TO CLEAR ROW 0 IF DATA IS 0

ROW4P: MOV DPTR, #ROW4 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET4 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR4 ;JUMP TO CLEAR ROW 0 IF DATA IS 0

ROW5P: MOV DPTR, #ROW5 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET5 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR5 ;JUMP TO CLEAR ROW 0 IF DATA IS 0

ROW6P: MOV DPTR, #ROW6 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JNZ SET6 ;JUMP TO SET ROW 0 IF DATA IS NOT 0
JZ CLEAR6 ;JUMP TO CLEAR ROW 0 IF DATA IS 0

ROW7P: MOV DPTR, #ROW7 ;SET POINTER TO FIRST ROW
MOV A, R0 ;SET A TO COLUMN COUNTER VALUE
MOVC A, @A+DPTR ;GET DATA
JZ CLEAR7 ;JUMP TO CLEAR ROW 0 IF DATA IS 0
CJNE A, FFH, SET7 ;SEE IF DATABASE IS FFH, IF IT IS THEN ITS FINISHED IF NOT CARRY ON
LJMP START ;IF FINISHED JUMP BACK TO START TO SHOW MESSEGE AGAIN


;**********SET OR CLEAR THE BIT AND ON WITH NEXT ROW*****************
SET0: SETB RB0
LJMP ROW1P
CLEAR0: CLR RB0
LJMP ROW1P

SET1: SETB RB1
LJMP ROW2P
CLEAR1: CLR RB1
LJMP ROW2P

SET2: SETB RB2
LJMP ROW3P
CLEAR2: CLR RB2
LJMP ROW3P

SET3: SETB RB3
LJMP ROW4P
CLEAR3: CLR RB3
LJMP ROW4P

SET4: SETB RB4
LJMP ROW5P
CLEAR4: CLR RB4
LJMP ROW5P

SET5: SETB RB5
LJMP ROW6P
CLEAR5:
CLR RB5
LJMP ROW6P

SET6: SETB RB6
LJMP ROW7P
CLEAR6: CLR RB6
LJMP ROW7P

SET7: SETB RB7
MOV P2, 2FH ;OUT PUT FINAL PROCESSED BYTE TO PORT 2
LCALL DELAY ;DELAY BEFORE NEXT BYTE
INC R0 ;INCREMENT COLUMN COUNTER SO YOU PROCESS NEXT COLUMN
LJMP ROW0P
CLEAR7: CLR RB7
MOV P2, 2FH ;OUT PUT FINAL PROCESSED BYTE TO PORT 2
LCALL DELAY ;DELAY BEFORE NEXT BYTE
INC R0 ;INCREMENT COLUMN COUNTER SO YOU PROCESS NEXT COLUMN
LJMP ROW0P ;JUMPBACK TO PROCESS NEXT ONE




;*********************DELAY SUBROUTINE************************************
DELAY:
; MOV R3, #FFH
;D2:
MOV R4, #FFh
NEXT: MOV R5, #FFh
AGAIN: DJNZ R5, AGAIN
DJNZ R4, NEXT
; DJNZ R3, D2

RET

;*******************DEFUALT MESSGE IS "HELLO", DATA FOR POV DESIGN YOUR MESSEGE HERE************************
ROW0: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 01H, 01H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 01H, 01H, 01H, 01H, 00H, 00H
ROW1: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 01H, 00H, 00H
ROW2: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 01H, 00H, 00H
ROW3: DB 00H, 01H, 01H, 01H, 01H, 01H, 00H, 01H, 01H, 01H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 01H, 00H, 00H
ROW4: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 01H, 00H, 00H
ROW5: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 01H, 00H, 00H
ROW6: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 00H, 01H, 00H, 00H, 00H, 01H, 00H, 00H
ROW7: DB 00H, 01H, 00H, 00H, 00H, 01H, 00H, 01H, 01H, 01H, 01H, 00H, 01H, 01H, 01H, 01H, 00H, 01H, 01H, 01H, 01H, 00H, 01H, 01H, 01H, 01H, 01H, 00H, FFH

END
/code

8051.h
/code
;--- 8051 registers ---
ACC data 0xE0
B data 0xF0
DPH data 0x83
DPL data 0x82
IE data 0xA8
IP data 0xB8
P0 data 0x80
P1 data 0x90
P2 data 0xA0
P3 data 0xB0
PCON data 0x87
PSW data 0xD0
SBUF data 0x99
SCON data 0x98
SP data 0x81
TCON data 0x88
TH0 data 0x8C
TH1 data 0x8D
TL0 data 0x8A
TL1 data 0x8B
TMOD data 0x89

; --- 8051 register bit fields ---
; IE
EA bit 0xAF
ES bit 0xAC
ET1 bit 0xAB
EX1 bit 0xAA
ET0 bit 0xA9
EX0 bit 0xA8
; IP
PS bit 0xBC
PT1 bit 0xBB
PX1 bit 0xBA
PT0 bit 0xB9
PX0 bit 0xB8
; P3
RD bit 0xB7
WR bit 0xB6
T1 bit 0xB5
T0 bit 0xB4
INT1 bit 0xB3
INT0 bit 0xB2
TXD bit 0xB1
RXD bit 0xB0
; PSW
CY bit 0xD7
AC bit 0xD6
F0 bit 0xD5
RS1 bit 0xD4
RS0 bit 0xD3
OV bit 0xD2
P bit 0xD0
; TCON
TF1 bit 0x8F
TR1 bit 0x8E
TF0 bit 0x8D
TR0 bit 0x8C
IE1 bit 0x8B
IT1 bit 0x8A
IE0 bit 0x89
IT0 bit 0x88
; SCON
SM0 bit 0x9F
SM1 bit 0x9E
SM2 bit 0x9D
REN bit 0x9C
TB8 bit 0x9B
RB8 bit 0x9A
TI bit 0x99
RI bit 0x98



/code
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top