Click to See Complete Forum and Search --> : help with temp sensor code


tsc067
November 15th, 2011, 06:57 PM
hi
working on my project which is temp sensor on my hc11, which drives motors on an H-Bridge... the following is my code, problem is my instructor wants me to implement pwm, which when my motors kick in they start slow then gain speed.... please help me out,.. would be much appreciated .....


.AREA skell (ABS)
.MODULE skell


.ORG 0x1040;




Main:



;lds #0x00ff;



jsr lcd_init;
jsr RTI_init;
jsr clockinit;
jsr INITSTATUS;
jsr adc_init;

LDAA #0
STAA state_var;

LDAA #0
STAA time_var

LDAA #21
STAA SETTEMP1;


STAA SETTEMP2;

ldx #PACTL;
BSET 0,X,#0X80;
CLI;





mainloop:

ldaa state_var;
cmpa #0;
beq 1$;
cmpa #1;
beq 2$;
cmpa #2;
beq 3$;
cmpa #3;
beq 4$;
cmpa #4;
beq 5$;

1$: jsr initstatus;
ldx #10
jsr delay;
jmp endloop;

2$:
ldaa #0x01;
jsr lcd_ctrl;

jsr room1_disp;
jsr room2_disp;
jsr time_disp;
ldx #10
jsr delay;
jmp endloop;
3$:
ldaa #1;
jsr lcd_ctrl;
jsr room1_disp;
ldx #10;
jsr delay;
jmp endloop;

4$:
ldaa #1;
jsr lcd_ctrl;
jsr room2_disp;
ldx #10;
jsr delay;
jmp endloop;

5$:
ldaa #1;
jsr lcd_ctrl;
jsr time_disp;
ldx #10;
jsr delay;


endloop:

bra mainloop;






IC3_ISR:


JSR DEBOUNCE;
ldaa #0x01;
STAA TFLG1;


ldaa state_var;

cmpa #4;
bhs 1$;
inca;
staa state_var;
jmp ic3_q;

1$: clra;
staa state_var;

ic3_q: rti;




IC2_ISR:

JSR DEBOUNCE;
ldaa #0x02;
STAA TFLG1;

ldaa state_var;
cmpa #2;
beq 1$;
cmpa #3;
beq 2$;
cmpa #4;
beq 3$;

1$:
ldaa settemp1;
cmpa #30;
bhs ic2_q;
inca;
staa settemp1;
bra ic2_q;
2$:
ldaa settemp2;
cmpa #30;
bhs ic2_q;
inca;
staa settemp2;
bra ic2_q;
3$: ldaa minute;
cmpa #59;
bhs 4$;
inca;
staa minute;
bra ic2_q;
4$: clra;
staa minute;
ic2_q: rti;



IC1_ISR:


JSR DEBOUNCE;
ldaa #0x04;
STAA TFLG1;

ldaa state_var;
cmpa #2;
beq 1$;
cmpa #3;
beq 2$;
cmpa #4;
beq 3$;

1$:
ldaa settemp1;
cmpa #16;
bls ic1_q;
deca;
staa settemp1;
bra ic1_q;
2$:
ldaa settemp2;
cmpa #16;
bls ic1_q;
deca;
staa settemp2;
bra ic1_q;
3$: ldaa hour;
cmpa #23;
bhs 4$;
inca;
staa hour;
bra ic1_q;
4$: clra;
staa hour;


ic1_q: rti;






INITSTATUS:

PSHA;
PSHX;

LDAA #1
JSR LCD_CTRL;

LDAA #0X81;
JSR LCD_CTRL;
LDX #PNAME;
LDAB #14
JSR LCD_STG;

LDAA #0XC3
JSR LCD_CTRL;
LDX #DESIGNER;
LDAB #8
JSR LCD_STG;

PULX
PULA;
RTS




Rti_INIT:
PSHA;
LDAA #0X40;
STAA TMSK2;
LDAA #0X07 ;
STAA TMSK1;
LDAA #0X15 ;
STAA TCTL2;
LDAA #0;
STAA PACTL;
PULA;
RTS;



DEBOUNCE:
pshx

ldx #PORTA
brclr 0,x,#0x01,.
brclr 0,x,#0x02,.
brclr 0,x,#0x04,.

ldx #0x0001
jsr DELAY

pulx
rts

RTI_ISR:


LDAA #0X40;
STAA TFLG2;


LDAA RTI_CNT;
INCA;
staa rti_cnt;
CMPA #15;
BLo rti_isrq;
CLRA;
STAA RTI_CNT;

jsr room_ctrl;

LDAA DECIMAL;
INCA;
CMPA #0X0A;
BLo 1$;
CLRA;
BLT 1$;
CLRA;
STAA DECIMAL;
JSR SECCOUNT;
bra rti_isrq;

1$: STAA DECIMAL;


RTI_ISRQ: RTI;




SECCOUNT:

PSHA;
LDAA SECOND;
INCA;
CMPA #60;
BLT 2$;
CLRA;
STAA SECOND;
JSR MINUTECOUNT



2$: STAA SECOND;
PULA;

RTS;

MINUTECOUNT:

PSHA;
LDAA MINUTE;
INCA;
CMPA #60;
BLT 3$;
CLRA;
STAA MINUTE;
JSR HOURCOUNT;

3$: STAA MINUTE;
PULA;
RTS;

HOURCOUNT:

PSHA;
LDAA HOUR;
INCA;
CMPA #24;
BLT 4$;
CLRA;
STAA HOUR;
LDAA #0;
STAA MINUTE;
LDAA #0;
STAA SECOND;
LDAA #0;
STAA DECIMAL;
BRA COUNTEND;


4$: STAA HOUR;
COUNTEND:
PULA;
RTS;



clockinit:

psha;

LDAA #0;

STAA DECIMAL;

LDAA #0;

STAA SECOND;

LDAA #0;

STAA MINUTE;

ldAA #0;

STAA HOUR;

pula;
rts;




time_disp:

psha;

LDAA #0Xc0;
jsr LCD_CTRL;

LDAA HOUR;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;

LDAA #0X3A;
JSR LCD_DATA;

LDAA MINUTE;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;

LDAA #0X3A;
JSR LCD_DATA;

LDAA SECOND;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;
pula;
rts;


room1_disp:

psha;



ldaa #0x80;
jsr lcd_ctrl;

ldaa #1;
jsr hex2asc;
tba;
jsr lcd_data;

LDAA #0X3A;
JSR LCD_DATA;

ldaa currenttemp1;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;

ldaa #0x2f;
jsr lcd_data;

ldaa settemp1;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;
pula;
rts;

room2_disp:

psha;
ldaa #0x88;
jsr lcd_ctrl;

ldaa #2;
jsr hex2asc;
tba;
jsr lcd_data;


LDAA #0X3A;
JSR LCD_DATA;

ldaa currenttemp2;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;

ldaa #0x2f;
jsr lcd_data;

ldaa settemp2;
JSR HEX2BCD;
tba;
JSR HEX2ASC;
JSR LCD_DATA;
TBA;
JSR LCD_DATA;
pula;
rts;


room_ctrl:

psha;
pshb;

jsr adc_init;
jsr adc_data1; SEND DATA TO ACCA


tab;
clra;
asld;
subd #275;

stab currenttemp1;

ldx #currenttemp1;

ldaa settemp1 ;
cmpa 0,x;
bhi 1$;
ldx #porta;
bclr 0,x,#0x10;
bra room2;



1$:
ldx #porta;
bset 0,x,#0x10;


room2:
jsr adc_init;
jsr adc_data; SEND DATA TO ACCA


tab;
clra;
asld;
subd #277;

stab currenttemp2;

ldx #currenttemp2;

ldaa settemp2 ;
cmpa 0,x;
bhi 2$;
ldx #porta;
bclr 0,x,#0x20;
bra ctrl_q;




2$:
ldx #porta;
bset 0,x,#0x20;

ctrl_q:


pulb;
pula;
rts;

;***************************************************************************************

.include 'EQU_lib.asm'
.include 'UTIL_lib.asm'
.include 'LCD_lib.asm'
.include 'ADC_LIB2.asm'
.include 'spi_lib.asm'

;****************************************************************************
;CONSTANT section starts here
;****************************************************************************

PNAME: .asciz "TEMPERTURE SYS"
DESIGNER: .asciz "john smith"


;***************************************************************************************

;DATA section starts here
;****************************************************************************

.ORG 0x0000



state_var: .dS 1;
currenttemp1: .ds 1;
settemp1: .dS 1
currenttemp2: .ds 1;
settemp2: .dS 1;
time_var: .dS 1;


HOUR: .ds 1
minute: .ds 1
second: .ds 1
decimal: .ds 1
RTI_CNT: .Ds 1;


;****************************************************************************
;INTERRUPT VECTORS starts here
;****************************************************************************




.ORG 0X7FEA;
.dw IC3_ISR


.ORG 0X7FEc;
.dw IC2_ISR

.ORG 0X7FEe;
.dw IC1_ISR


.ORG 0X7FF0;
.dw RTI_ISR


;****************************************************************************
;RESET VECTORS starts here
;****************************************************************************

;.org 0xfffe;
;.dw main;