| ??? 09/25/07 08:49 Read: times |
#144964 - much better view Responding to: ???'s previous message |
Andy Neil said:
John Papas said:
...replace this with your code... When it says, "...replace this with your code...", it means that you should delete the text "...replace this with your code..." and insert the text of your source code in its place - leaving the 'pre' and '/pre' tags in place! Then use the 'Preview' button to preview your post and make sure that it looks good. For full details, read http://www.8052.com/faqs.phtml?FAQ=120199
KBE EQU 9Dh
KBLS EQU 9Ch
KBF EQU 9Eh
IEN0 EQU 0A8h
IEN1 EQU 0B1h
MAXTH EQU 37h ;maximum temperature seted
MINTH EQU 1Eh ;minimum " "
LCD DATA P2 ;define LCD data port on port 1
BUSY BIT LCD.7 ;define LCD busy flag
;*************************************************************
DATA_SEG SEGMENT DATA
MAIN_SEG SEGMENT CODE
BITS_SEG SEGMENT BIT
RSEG DATA_SEG
Temp: DS 1
BitCnt: DS 1
Thermk: DS 1
RSEG BITS_SEG
FLAG1: DBIT 1
Buncb_7: DBIT 1
Buncb_6: DBIT 1
;***************************************************
; INTERRUPT VECTOR DEFINITIONS
;---------------------------------------------------
CSEG AT 0000H ; reset vector
JMP POWER_UP ; power-on entry point
CSEG AT 0003H ; intr 0 vector
RETI ; not used
CSEG AT 000BH ; timer 0 vector
RETI ; not used
CSEG AT 0013H ; intr 1 vector
CLR EX1 ; external int 1
RETI ; not used
CSEG AT 001BH ; timer 1 vector
RETI ; NOT used
CSEG AT 003BH ; Kyeboard vector
JMP SCANK ; used
;***************************************************
; MAIN PROGRAM INITIALIZATION
;---------------------------------------------------
RSEG MAIN_SEG
USING 0 ; use register block 0
POWER_UP:
MOV SP,#7Fh ; set stack pointer
CALL Keyb_Init
mov Temp,#3Ch ;a number which i make some
MOV IEN0,#80h ;EA=1 and ET1=1
MOV IEN1,#01h ;KBD=1 Keyboard enable bit
AgainSc:
MOV A,KBF
ANL A,#0A0h
JZ Nokey
MOV IEN1,#00h ;disable key inderrupt
MOV A,#03h ;start delay
ly3: DEC A
JNZ ly3
MOV A,#0FFh
ly4: DEC A
JNZ ly4 ;end delay
CLR A
MOV KBF,A ;enable detection
MOV IEN1,#01h
Nokey: JMP AgainSc
;*****************************************************************************
Keyb_Init:
MOV KBE,#0E0h ;enable interrupt only by the last 3 bits
MOV KBLS,#00h ;enable bit only by low level (zero)
MOV KBF,#00h
RET
;===============================================================
;ISR routine for scanning and showing on the dispaly the user preferences and the
;actual temperature
;===============================================================
SCANK:
DISPLAY:push acc
MOV A,#80h
CALL COMMAND ;where to be schowed
MOV DPTR,#TEST
ACALL DISP_STRING
MOV A,#85h
CALL COMMAND
CALL Show
MOV A,#0C1h
CALL COMMAND
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;the following assemby code is for subtraction of the stored number
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MOV A,KBF ;check which key used ,only the key Number 5
ANL A,#20h
JZ Next_Key
MOV A,Temp
CJNE A,#MINTH,KNex1 ;the set value can not be smaller than the MINTH
KNex1: JC KExod
CLR C
SUBB A,#01 ;decriment 1
MOV Temp,A
CALL Hex_to_Dec ;reform the data to decimal
CALL Show
KExod:
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;the following assemby code is for addition the stored number
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Next_Key:
MOV A,KBF ;check which key used ,only the key Number 7
ANL A,#80h
JZ Out
MOV A,Temp
CJNE A,#MAXTH,Nex1 ;the set value can not be biger than the MAXTH
Nex1: JNC Out
CLR C
ADDC A,#01 ;increment 1
MOV Temp,A
CALL Hex_to_Dec ;reform the data to decimal
CALL Show
Out: POP acc
RETI
END
|
| Topic | Author | Date |
| ISR Keyboard | 01/01/70 00:00 | |
| How to use the 'Insert Code' button | 01/01/70 00:00 | |
| much better view | 01/01/70 00:00 | |
| Debouncing | 01/01/70 00:00 | |
| Debouncing etc is far easier handled | 01/01/70 00:00 | |
see the FAQ | 01/01/70 00:00 |



