Download Code of Assembly Language-Microcontroller and Assembly Language-Project Report and more Thesis Microcontrollers in PDF only on Docsity!
;PORTS INFORMATION
;PORT0 : CONTROL SIGNALS FOR TLD18200T
BOARD
;PORT1 : INPUT FORM HCTL
;PORT2 : INPUT FORM ADC
;PORT3 : CONTROL SIGNALS FOR HCTL
PWM_B EQU 22H
BYTE1 EQU 23H
BYTE2 EQU 24H
BYTE3 EQU 25H
BYTE4 EQU 26H
PWM_VALUE EQU R
ADC_VALUE EQU R
CS EQU P0.
READ EQU P0.
WRITE EQU P0.
PWM EQU P0.
DIR EQU P0.
BRAKE EQU P0.
THERM EQU P0.
HCTL_IN EQU P
ADC_IN EQU P
RX EQU P3.
TX EQU P3.
INTR_ADC EQU P3.
RST_HCTL EQU P3.
OE_HCTL EQU P3.
SEL2 EQU P3.
SEL1 EQU P3.
ORG 0000H
LJMP MAIN
ORG 0003H
;LJMP EXT0_ISR
ORG 000BH
LJMP T0ISR
ORG 0013H
;LJMP EXT1_ISR
ORG 001BH
;LJMP T1_ISR
ORG 0023H
LJMP SER_ISR
ORG 0030H
MAIN:
CALL INITIATE ;INITIATE ALL
THE PORTS
CALL SER_INIT ;INITIATE
SERIAL WITH 9600 BAUD
CALL TIMER_INIT
;INITIATE TIMER0 WITH BASE WAVE
(100KHz) MOV IE,#10010010B ;ENABLE SERIAL AND TIMER 0 INTURRPET. HERE: SJMP HERE
INITIATE:
MOV PWM_B,#00H
MOV ADC_IN,#0FFH
MOV HCTL_IN,#0FFH
MOV PWM_VALUE,#50H
MOV ADC_VALUE,#00H
MOV R5,#
SETB CS
SETB WRITE
SETB READ
CLR BRAKE
CLR PWM
SETB DIR
SETB OE_HCTL
SETB RST_HCTL
CLR SEL
CLR SEL
RET
SER_INIT:
MOV TMOD,#20H ;t1,mOD MOV TH1,#-6 ;RELOAD VALUE=(CRYSTAL FREQ/12)/(BAUDRATE*32) 26.04 FOR 2400,6.1 FOR 9600 USING 24MHZ OSCILLATOR
CODE
MOV SCON,#52H
SETB TR
RET
TIMER_INIT:
MOV TMOD,#02H ;t0,mOD MOV TH0,#-255 ;100KHz BASE WAVE SETB TR RET
ADC_SAMPLE:
CLR CS
CLR WRITE
NOP
SETB WRITE
SETB CS
JB INTR_ADC,$ ;Wait for INTR signal
;READ THE SAMPLE
CLR CS ;Make CS Low CLR READ ;Make RD Low MOV A,ADC_IN ;Read the converted value MOV ADC_VALUE,A ;Store it in local variable SETB READ ;Make RD High SETB CS ;Make CS High
RET
;OPERATION
;ENTRY ON
;EXIT ON
;REGISTER EFFECTED
/*EXT0_ISR:
CLR CS
CLR READ
MOV A,ADC_IN
MOV ADC_VALUE,A
SETB READ
SETB CS
RETI*/
T0ISR:
MOV R4,PWM_B
CJNE R4,#100,CONT
MOV PWM_B,#
CJNE R5,#40,CONT
CALL ADC_SAMPLE
MOV R5,#
MOV A,ADC_VALUE
SUBB A,#
JC CONT
CALL SHUTDOWN
CONT:
CLR C
MOV A,PWM_VALUE ;MOV
THE REQUIRED PWM VALUE IN A, PWM_VALUE
IS RECIEVED BY SERIAL PORT
SUBB A,PWM_B
;A=PWM_VALUE-PWM_B
JC ZERO ;IF
PWM_VALUE<PWM_B => CLEAR THE PIN
SETB PWM ;ELSE SET THE
PIN
SJMP Q
ZERO:
CLR PWM
Q:
INC PWM_B
INC R
RETI
SER_ISR:
JNB RI,TRANSMIT
CLR RI
MOV A,SBUF
MOV PWM_VALUE,A
CALL OUTCHAR ;ECHO
RECIEVED CHAR
SJMP ENDI
TRANSMIT:
CLR TI
;MOV SBUF,A
ENDI:
RETI
INCHAR:
JNB RI,$
CLR RI
MOV A,SBUF
MOV C,P