0% found this document useful (0 votes)
39 views14 pages

Switch Selection

The document contains code for simulating different circuit components like resistors, diodes, and RL/RC circuits. It defines routines for selecting a voltage range based on the input voltage and generating the corresponding output values over 64 time points to be displayed on an oscilloscope. Routines are also included for simulating the behavior of each circuit component by performing the appropriate calculations on the voltage values at each time point.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views14 pages

Switch Selection

The document contains code for simulating different circuit components like resistors, diodes, and RL/RC circuits. It defines routines for selecting a voltage range based on the input voltage and generating the corresponding output values over 64 time points to be displayed on an oscilloscope. Routines are also included for simulating the behavior of each circuit component by performing the appropriate calculations on the voltage values at each time point.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

SWITCH SELECTION

ORG 0000H

SELECTCIRCUIT:

CLR A

CALL DELAY

MOV A, P2

RCIRCUIT:

CJNE A, #11111110B, RLCIRCUIT

JMP $

RLCIRCUIT:

CJNE A, #11111101B, RCCIRCUIT

JMP $

RCCIRCUIT:

CJNE A, #11111011B, DCIRCUIT

JMP $

DCIRCUIT:

CJNE A, #11110111B, SELECTCIRCUIT

JMP $

DELAY:

MOV R0, #01H

DJNZ R0, $

RET

END

INTERFACING ADC

ORG 0

JMP main

ORG 3
JMP ext0ISR

ORG 0BH

JMP timer0ISR

ORG 30H

main:

SETB IT0

SETB EX0

CLR P0.7

MOV TMOD, #2

MOV TH0, #-50

MOV TL0, #-50

SETB TR0

SETB ET0

SETB EA

JMP $

timer0ISR:

CLR P3.6

SETB P3.6

RETI

ext0ISR:
CLR P3.7

MOV R0, P2

SETB P3.7

RETI

DIODE

MOV R0, #35

MOV A, R0

Diode:

MOV 40H, A

MOV R1, #40H

SUBB A, #34

JC diodeLessThan

diodeGreaterThan:

MOV A, #64

diodeLoopB:

MOV @R1, #34

DEC A

INC R1

JNZ diodeLoopB

CALL DONE

diodeLessThan:

MOV A, #125

diodeLoopA:

MOV @R1, 40H

DEC A

INC R1

JNZ diodeLoopA

CALL DONE
DONE:

JMP $

MORE VOLTAGE A

MOREVOLTAGEA:

CLR C

MOV A, R0

MOV R1, #40H

MOV @R1, A

INC R1

SUBB A, #24

MOV @R1, A

INC R1

SUBB A, #22

MOV @R1, A

INC R1

SUBB A, #20

MOV @R1, A

INC R1

SUBB A, #18

MOV @R1, A

INC R1

SUBB A, #16

MOV @R1, A

INC R1

SUBB A, #15

MOV @R1, A

INC R1

SUBB A, #13
MOV @R1, A

INC R1

SUBB A, #12

MOV @R1, A

INC R1

SUBB A, #11

MOV @R1, A

INC R1

SUBB A, #10

MOV @R1, A

INC R1

SUBB A, #9

MOV @R1, A

INC R1

MOV R2, #2

VOLTAGEA_LOOPA:

SUBB A, #8

MOV @R1, A

INC R1

DJNZ R2, VOLTAGEA_LOOPA

MOV R2, #3

VOLTAGEA_LOOPB:

SUBB A, #6

MOV @R1, A

INC R1

DJNZ R2, VOLTAGEA_LOOPB

SUBB A, #5

MOV @R1, A

INC R1
MOV R2, #3

VOLTAGEA_LOOPC:

SUBB A, #4

MOV @R1, A

INC R1

DJNZ R2, VOLTAGEA_LOOPC

MOV R2, #3

VOLTAGEA_LOOPD:

SUBB A, #3

MOV @R1, A

INC R1

DJNZ R2, VOLTAGEA_LOOPD

MOV R2, #7

VOLTAGEA_LOOPE:

SUBB A, #2

MOV @R1, A

INC R1

DJNZ R2, VOLTAGEA_LOOPE

VOLTAGEA_LOOPF:

SUBB A, #1

MOV @R1, A

INC R1

JNZ VOLTAGEA_LOOPF

RL AND RC CIRCUIT

RLCIRCUIT:

CALL VOLTAGERANGE ;selects the suitable voltange range for simluating Vin
;already includes storing 64 plot points of Vin*e^-t at memory positions 30H to 7FH

CALL SHOWIN_SCOPE ;no need for recomputation, Vl = Vin*e^-t


;plots the 64 points in the show scope

RET

RCCIRCUIT:

CALL VOLTAGERANGE ;similar to VOLTAGERANGE explained in RLCIRCUIT

MOV R1, #40H ; start address of 64 plot points in #40H

RCLOOP: ; needs to recompute, Vc = Vin - Vin*e^-t

MOV A, @R1

SUBB A, R0 ; subtraction only allowed in Accumulator

MOV @R1, A

INC R1

CJNE R1, #7FH, RCLOOP ; process repeats until all 64 points are converted.

CALL SHOWIN_SCOPE

RET

RESISTOR

MOV A, R0

Resistor:

MOV 40H, A

MOV R1, #40H

MOV A, #64

LoopResistor:

MOV @R1, 40H

DEC A

INC R1

JNZ LoopResistor

CALL DONE

DONE:

JMP $
VOLTAGE RANGE

VOLTAGERANGE:

MOV R0,#100 ;Assign Value of Vin

VOLTAGEA:

CJNE R0, #246, NOT_EQUALA

JMP MOREVOLTAGEA

NOT_EQUALA:

JC VOLTAGEB

MOREVOLTAGEA:

JMP $ ;Vin = 4.80- 5.00

VOLTAGEB:

CJNE R0, #236, NOT_EQUALB

JMP MOREVOLTAGEB

NOT_EQUALB:

JC VOLTAGEC

MOREVOLTAGEB:

JMP $ ;Vin = 4.60- 4.79

VOLTAGEC:

CJNE R0, #226, NOT_EQUALC

JMP MOREVOLTAGEC

NOT_EQUALC:

JC VOLTAGED

MOREVOLTAGEC:

JMP $ ;Vin = 4.40- 4.59

VOLTAGED:

CJNE R0, #215, NOT_EQUALD

JMP MOREVOLTAGED

NOT_EQUALD:

JC VOLTAGEE
MOREVOLTAGED:

JMP $ ;Vin = 4.20- 4.39

VOLTAGEE:

CJNE R0, #205, NOT_EQUALE

JMP MOREVOLTAGEE

NOT_EQUALE:

JC VOLTAGEF

MOREVOLTAGEE:

JMP $ ;Vin = 4.00- 4.19

VOLTAGEF:

CJNE R0, #195, NOT_EQUALF

JMP MOREVOLTAGEF

NOT_EQUALF:

JC VOLTAGEG

MOREVOLTAGEF:

JMP $ ;Vin = 3.80- 3.99

VOLTAGEG:

CJNE R0, #185, NOT_EQUALG

JMP MOREVOLTAGEG

NOT_EQUALG:

JC VOLTAGEH

MOREVOLTAGEG:

JMP $ ;Vin = 3.60- 3.79

VOLTAGEH:

CJNE R0, #174, NOT_EQUALH

JMP MOREVOLTAGEH

NOT_EQUALH:

JC VOLTAGEI

MOREVOLTAGEH:
JMP $ ;Vin = 3.40- 3.59

VOLTAGEI:

CJNE R0, #164, NOT_EQUALI

JMP MOREVOLTAGEI

NOT_EQUALI:

JC VOLTAGEJ

MOREVOLTAGEI:

JMP $ ;Vin = 3.20- 3.39

VOLTAGEJ:

CJNE R0, #154, NOT_EQUALJ

JMP MOREVOLTAGEJ

NOT_EQUALJ:

JC VOLTAGEK

MOREVOLTAGEJ:

JMP $ ;Vin = 3.00- 3.19

VOLTAGEK:

CJNE R0, #144, NOT_EQUALK

JMP MOREVOLTAGEK

NOT_EQUALK:

JC VOLTAGEL

MOREVOLTAGEK:

JMP $ ;Vin = 2.80- 2.99

VOLTAGEL:

CJNE R0, #134, NOT_EQUALL

JMP MOREVOLTAGEL

NOT_EQUALL:

JC VOLTAGEM

MOREVOLTAGEL:

JMP $ ;Vin = 2.60- 2.79


VOLTAGEM:

CJNE R0, #123, NOT_EQUALM

JMP MOREVOLTAGEM

NOT_EQUALM:

JC VOLTAGEN

MOREVOLTAGEM:

JMP $ ;Vin = 2.40- 2.59

VOLTAGEN:

CJNE R0, #113, NOT_EQUALN

JMP MOREVOLTAGEN

NOT_EQUALN:

JC VOLTAGEO

MOREVOLTAGEN:

JMP $ ;Vin = 2.20- 2.39

VOLTAGEO:

CJNE R0, #103, NOT_EQUALO

JMP MOREVOLTAGEO

NOT_EQUALO:

JC VOLTAGEP

MOREVOLTAGEO:

JMP $ ;Vin = 2.00- 2.19

VOLTAGEP:

CJNE R0, #92, NOT_EQUALP

JMP MOREVOLTAGEP

NOT_EQUALP:

JC VOLTAGEQ

MOREVOLTAGEP:

JMP $ ;Vin = 1.80- 1.99

VOLTAGEQ:
CJNE R0, #82, NOT_EQUALQ

JMP MOREVOLTAGEQ

NOT_EQUALQ:

JC VOLTAGER

MOREVOLTAGEQ:

JMP $ ;Vin = 1.60- 1.79

VOLTAGER:

CJNE R0, #72, NOT_EQUALR

JMP MOREVOLTAGER

NOT_EQUALR:

JC VOLTAGES

MOREVOLTAGER:

JMP $ ;Vin = 1.40- 1.59

VOLTAGES:

CJNE R0, #62, NOT_EQUALS

JMP MOREVOLTAGES

NOT_EQUALS:

JC VOLTAGET

MOREVOLTAGES:

JMP $ ;Vin = 1.20- 1.39

VOLTAGET:

CJNE R0, #51, NOT_EQUALT

JMP MOREVOLTAGET

NOT_EQUALT:

JC VOLTAGEU

MOREVOLTAGET:

JMP $ ;Vin = 1.00- 1.19

VOLTAGEU:

CJNE R0, #41, NOT_EQUALU


JMP MOREVOLTAGEU

NOT_EQUALU:

JC VOLTAGEV

MOREVOLTAGEU:

JMP $ ;Vin = 0.80- 0.99

VOLTAGEV:

CJNE R0, #31, NOT_EQUALV

JMP MOREVOLTAGEV

NOT_EQUALV:

JC VOLTAGEW

MOREVOLTAGEV:

JMP $ ;Vin = 0.60- 0.79

VOLTAGEW:

CJNE R0, #21, NOT_EQUALW

JMP MOREVOLTAGEW

NOT_EQUALW:

JC VOLTAGEX

MOREVOLTAGEW:

JMP $ ;Vin = 0.40- 0.59

VOLTAGEX:

CJNE R0, #10, NOT_EQUALX

JMP MOREVOLTAGEX

NOT_EQUALX:

JC VOLTAGEY

MOREVOLTAGEX:

JMP $ ;Vin = 0.20- 0.39

VOLTAGEY:

CJNE R0, #0, NOT_EQUALY

JMP MOREVOLTAGEY
NOT_EQUALY:

JC VOLTAGEZ

MOREVOLTAGEY:

JMP $ ;Vin = 0.00- 0.19

VOLTAGEZ: ;Vin = 0.00

JMP $

END

You might also like