📄 adc.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Copy right Notice;;;;;;;;;;;;;;;;;;This program is for personal use only.You may change/modify it regarding ur requirements. ;;This program has been tested and verfied, but in case of any queries, feel free to ;;email(mail_to_salman@yahoo.com) me.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;##################################Program for Data Acquisition using ADC with 16 channel;This can be used with any 8-16 bit ADC, with or without MUX;channel selection on P2.0 --- P2.3: ADC Start coversion on P2.4: ADC busy on P2.5 ;ADC data input at P0(lowbyte) and P1(highbyte);Data is output serially starting from CHANNEL1 to CHANNEL10 ;Each sampling cycle is initiated by receiving 00H on serial port. ORG 0000H SJMP MAIN MAIN: MOV SP,#20H MOV SCON,#52H ;#Mode 1-8 bit uart MOV TMOD,#21H ; # TIMER 1 IN AUTORELOAD MODE AND 0 IN 16 BIT TIMER MODE MOV TH1,#-13D ; #2400 bit/sec buad rate SETB TR1 CLR RI SETB TI ;############ MOV P2,#0FFH ; INITIALIZE MOV A,#'S' ACALL SENDAGAIN: MOV SP,#20H ACALL RECEV CJNE A,#0H,AGAIN;;;;;;;;;;;;;;;;;;;;;;;;;; DATA SAVING SECTION;;;;;;;;;;;;;;;; ACALL CH_1 ACALL SAVE_D1 ACALL CH_2 ACALL SAVE_D2 ACALL CH_3 ACALL SAVE_D3 ACALL CH_4 ACALL SAVE_D4 ACALL CH_5 ACALL SAVE_D5 ACALL CH_6 ACALL SAVE_D6 ACALL CH_7 ACALL SAVE_D7 ACALL CH_8 ACALL SAVE_D8 ACALL CH_9 ACALL SAVE_D9 ACALL CH_10 ACALL SAVE_D10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA SENDING SECTION;;;;;;; ACALL SEND_D1 ACALL SEND_D2 ACALL SEND_D3 ACALL SEND_D4 ACALL SEND_D5 ACALL SEND_D6 ACALL SEND_D7 ACALL SEND_D8 ACALL SEND_D9 ACALL SEND_D10 ACALL AGAIN;####################MAIN PROGRAM ENDS HERE##########################SAVE_D1: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R0,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R0,P1 RET SAVE_D2: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R1,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R1,P1 RETSAVE_D3: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R2,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R2,P1 RETSAVE_D4: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R3,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R3,P1 RETSAVE_D5: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R4,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R4,P1 RETSAVE_D6: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R5,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R5,P1 RETSAVE_D7: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R6,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R6,P1 RETSAVE_D8: ACALL START_CONV ;START CONVERSION ACALL BANK1 MOV P0,#0FFH ; low byte MOV R7,P0 ACALL BANK2 MOV P1,#0FFH ;high byte MOV R7,P1 RETSAVE_D9: ACALL START_CONV ;START CONVERSION ACALL BANK3 MOV P0,#0FFH ; low byte MOV R0,P0 ACALL BANK4 MOV P1,#0FFH ;high byte MOV R0,P1 RETSAVE_D10: ACALL START_CONV ;START CONVERSION ACALL BANK3 MOV P0,#0FFH ; low byte MOV R1,P0 ACALL BANK4 MOV P1,#0FFH ;high byte MOV R1,P1 RETSEND: S: JNB TI,S ;##########################TRANSMISSION ROUTINE CLR TI CLR TR1 SETB TR1 MOV SBUF,A RETRECEV:R: JNB RI,R ;##########################RECEPTION ROUTINE######## CLR RI MOV A,SBUF RETDELAY: MOV R7,#0FFH ;DELAY REGISTER "I mSEC"REP: NOP NOP DJNZ R7,REP MOV R7,#0H RETSTART_CONV: CLR P2.4 ;START CONVERSION BY LOW PULSE METHOD NOP SETB P2.4 ;;;;;;;;;; SETB P2.5 ; USING P2.5 AS INPUT PIN ;;;;;;;;;; JNB P2.5,$ JB P2.5,$ ; TC=35 uS BUSY/CONVERSION RETBANK1: CLR RS0 CLR RS1 RETBANK2: SETB RS0 CLR RS1 RETBANK3: CLR RS0 SETB RS1 RETBANK4: SETB RS0 SETB RS1 RETSEND_D1: ACALL BANK2 MOV A,R0 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R0 ACALL SEND ACALL RECEV RETSEND_D2: ACALL BANK2 MOV A,R1 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R1 ACALL SEND ACALL RECEV RETSEND_D3: ACALL BANK2 MOV A,R2 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R2 ACALL SEND ACALL RECEV RETSEND_D4: ACALL BANK2 MOV A,R3 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R3 ACALL SEND ACALL RECEV RETSEND_D5: ACALL BANK2 MOV A,R4 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R4 ACALL SEND ACALL RECEV RETSEND_D6: ACALL BANK2 MOV A,R5 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R5 ACALL SEND ACALL RECEV RETSEND_D7: ACALL BANK2 MOV A,R6 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R6 ACALL SEND ACALL RECEV RETSEND_D8: ACALL BANK2 MOV A,R7 ACALL SEND ACALL RECEV ACALL BANK1 MOV A,R7 ACALL SEND ACALL RECEV RETSEND_D9: ACALL BANK4 MOV A,R0 ACALL SEND ACALL RECEV ACALL BANK3 MOV A,R0 ACALL SEND ACALL RECEV RETSEND_D10: ACALL BANK4 MOV A,R1 ACALL SEND ACALL RECEV ACALL BANK3 MOV A,R1 ACALL SEND ACALL RECEV RETCH_1: CLR P2.0 CLR P2.1 CLR P2.2 CLR P2.3 RETCH_2: SETB P2.0 CLR P2.1 CLR P2.2 CLR P2.3 RET CH_3: CLR P2.0 SETB P2.1 CLR P2.2 CLR P2.3 RET CH_4: SETB P2.0 SETB P2.1 CLR P2.2 CLR P2.3 RET CH_5: CLR P2.0 CLR P2.1 SETB P2.2 CLR P2.3 RET CH_6: SETB P2.0 CLR P2.1 SETB P2.2 CLR P2.3 RET CH_7: CLR P2.0 SETB P2.1 SETB P2.2 CLR P2.3 RET CH_8: SETB P2.0 SETB P2.1 SETB P2.2 CLR P2.3 RET CH_9: CLR P2.0 CLR P2.1 CLR P2.2 SETB P2.3 RET CH_10: SETB P2.0 CLR P2.1 CLR P2.2 SETB P2.3 RET CH_11: CLR P2.0 SETB P2.1 CLR P2.2 SETB P2.3 RET CH_12: SETB P2.0 SETB P2.1 CLR P2.2 SETB P2.3 RET CH_13: CLR P2.0 CLR P2.1 SETB P2.2 SETB P2.3 RET CH_14: SETB P2.0 CLR P2.1 SETB P2.2 SETB P2.3 RET CH_15: CLR P2.0 SETB P2.1 SETB P2.2 SETB P2.3 RET CH_16: SETB P2.0 SETB P2.1 SETB P2.2 SETB P2.3 RET END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -