$NOMOD51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(C8051F340.inc) ;die C8051F340-spezifischen Daten $list ;es wird ein Listing erstellt $title (P09_MCWS08.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: A/D-Wandler Spannungen dekodiert ;U/V Leuchte 3 Leuchte 2 ;0<=U<=1V aus aus max. 78 ;1< U<=2V aus ein max. 156 ;2< U<=3V ein aus max. 234 ;3< U<=3,3V ein ein max. 1024 ; ; ; ;Erstellt am: Mittwoch, 31. Dezember 2008 12:19:25 ;Programmiert: Juergen Walter ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Geaendert am: Mittwoch, 31. Dezember 2008 12:19:25 ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil fuer allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ;ORG ;------------------------------------------------------------------------ ;Initialisierungsteil fuer On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: call Init_Device ;Aufruf zur Initialisierung der Controller Funktionen ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: clr P3.2 ;Leuchte 1 Port 3.2 ruecksetzen, Programm laeuft setb AD0BUSY ;Wandlung Start jb AD0BUSY,$ ;warten bis Wandlung stop mov A,ADC0H ;Wert im ACCU clr C ;Carry loeschen subb A,#78 ;entspricht U>1V jc AUS_AUS ;Sprung da U<=1V subb A,#78 ;entspricht U>2V jc AUS_EIN ;Sprung da U<=2V subb A,#78 ;entspricht U>3V jc EIN_AUS ;Sprung da U<=3V clr P3.4 ;Leuchte 3 ein clr P3.3 ;Leuchte 2 ein jmp ABFRAGE ;Sprung zum Programmbeginn AUS_AUS: setb P3.4 ;Leuchte 3 aus setb P3.3 ;Leuchte 2 aus jmp ABFRAGE AUS_EIN: setb P3.4 ;Leuchte 3 aus clr P3.3 ;Leuchte 2 ein jmp ABFRAGE EIN_AUS: clr P3.4 ;Leuchte 3 ein setb P3.3 ;Leuchte 2 aus jmp ABFRAGE ;------------------------------------------------------------------------ ; Peripheral specific initialization functions, ; Called from the Init_Device label ;------------------------------------------------------------------------ PCA_Init: anl PCA0MD, #0BFh mov PCA0MD, #000h ret Timer_Init: mov TMOD, #001h ret ADC_Init: mov AMX0P, #013h mov AMX0N, #01Fh mov ADC0CF, #0FCh mov ADC0CN, #080h ret Voltage_Reference_Init: mov REF0CN, #008h ret Port_IO_Init: ; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Skipped, Push-Pull, Analog ; P1.2 - Skipped, Push-Pull, Digital ; P1.3 - Skipped, Push-Pull, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Analog ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital ; P2.4 - Unassigned, Open-Drain, Digital ; P2.5 - Unassigned, Open-Drain, Digital ; P2.6 - Unassigned, Open-Drain, Digital ; P2.7 - Unassigned, Open-Drain, Digital ; P3.0 - Unassigned, Open-Drain, Digital ; P3.1 - Unassigned, Open-Drain, Digital ; P3.2 - Skipped, Push-Pull, Digital ; P3.3 - Skipped, Push-Pull, Digital ; P3.4 - Skipped, Push-Pull, Digital ; P3.5 - Unassigned, Open-Drain, Digital ; P3.6 - Unassigned, Open-Drain, Digital ; P3.7 - Unassigned, Open-Drain, Digital mov P1MDIN, #0DDh mov P1MDOUT, #00Eh mov P3MDOUT, #01Ch mov P1SKIP, #00Eh mov P3SKIP, #01Ch mov XBR1, #040h ret Oscillator_Init: mov OSCICN, #083h ret Interrupts_Init: mov IE, #082h ret ; Initialization function for device, ; Call Init_Device from your main program Init_Device: lcall PCA_Init lcall Timer_Init lcall ADC_Init lcall Voltage_Reference_Init lcall Port_IO_Init lcall Oscillator_Init lcall Interrupts_Init ret end