update to local git repo
This commit is contained in:
253
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/STARTUP.lst
Executable file
253
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/STARTUP.lst
Executable file
@@ -0,0 +1,253 @@
|
||||
A51 MACRO ASSEMBLER STARTUP 05/22/2024 11:36:34 PAGE 1
|
||||
|
||||
|
||||
MACRO ASSEMBLER A51 V8.2.7.0
|
||||
OBJECT MODULE PLACED IN .\Objects\STARTUP.obj
|
||||
ASSEMBLER INVOKED BY: C:\Keil_v5\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG PRINT(.\Listings\STARTUP.lst) OBJECT(.\Obj
|
||||
ects\STARTUP.obj) EP
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
1 $nomod51
|
||||
2 ;------------------------------------------------------------------------------
|
||||
3 ; This file is part of the C51 Compiler package
|
||||
4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
5 ; Version 8.01
|
||||
6 ;
|
||||
7 ; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
8 ;------------------------------------------------------------------------------
|
||||
9 ; STARTUP.A51: This code is executed after processor reset.
|
||||
10 ;
|
||||
11 ; To translate this file use A51 with the following invocation:
|
||||
12 ;
|
||||
13 ; A51 STARTUP.A51
|
||||
14 ;
|
||||
15 ; To link the modified STARTUP.OBJ file to your application use the following
|
||||
16 ; Lx51 invocation:
|
||||
17 ;
|
||||
18 ; Lx51 your object file list, STARTUP.OBJ controls
|
||||
19 ;
|
||||
20 ;------------------------------------------------------------------------------
|
||||
21 ;
|
||||
22 ; User-defined <h> Power-On Initialization of Memory
|
||||
23 ;
|
||||
24 ; With the following EQU statements the initialization of memory
|
||||
25 ; at processor reset can be defined:
|
||||
26 ;
|
||||
27 ; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
28 ; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
29 ; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
0080 30 IDATALEN EQU 80H
|
||||
31 ;
|
||||
32 ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
33 ; <i> The absolute start address of XDATA memory
|
||||
0000 34 XDATASTART EQU 0
|
||||
35 ;
|
||||
36 ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
37 ; <i> The length of XDATA memory in bytes.
|
||||
0000 38 XDATALEN EQU 0
|
||||
39 ;
|
||||
40 ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
41 ; <i> The absolute start address of PDATA memory
|
||||
0000 42 PDATASTART EQU 0H
|
||||
43 ;
|
||||
44 ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
45 ; <i> The length of PDATA memory in bytes.
|
||||
0000 46 PDATALEN EQU 0H
|
||||
47 ;
|
||||
48 ;</h>
|
||||
49 ;------------------------------------------------------------------------------
|
||||
50 ;
|
||||
51 ;<h> Reentrant Stack Initialization
|
||||
52 ;
|
||||
53 ; The following EQU statements define the stack pointer for reentrant
|
||||
54 ; functions and initialized it:
|
||||
55 ;
|
||||
56 ; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
57 ; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
A51 MACRO ASSEMBLER STARTUP 05/22/2024 11:36:34 PAGE 2
|
||||
|
||||
58 ; <i> Stack space for reentrant functions in the SMALL model.
|
||||
0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
60 ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
61 ; <i> Set the top of the stack to the highest location.
|
||||
0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
63 ; </h>
|
||||
64 ;
|
||||
65 ; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
66 ; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
67 ; <i> Stack space for reentrant functions in the LARGE model.
|
||||
0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
69 ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
70 ; <i> Set the top of the stack to the highest location.
|
||||
0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
72 ; </h>
|
||||
73 ;
|
||||
74 ; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
75 ; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
76 ; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
78 ;
|
||||
79 ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
80 ; <i> Set the top of the stack to the highest location.
|
||||
0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
82 ; </h>
|
||||
83 ;</h>
|
||||
84 ;------------------------------------------------------------------------------
|
||||
85 ;
|
||||
86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
87 ; <e>Compact Model Page Definition
|
||||
88 ;
|
||||
89 ; <i>Define the XDATA page used for PDATA variables.
|
||||
90 ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
91 ;
|
||||
92 ; Enable pdata memory page initalization
|
||||
0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
94 ;
|
||||
95 ; <o> PPAGE number <0x0-0xFF>
|
||||
96 ; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
0000 97 PPAGE EQU 0
|
||||
98 ;
|
||||
99 ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
100 ; <i> most 8051 variants use P2 as uppermost address byte
|
||||
00A0 101 PPAGE_SFR DATA 0A0H
|
||||
102 ;
|
||||
103 ; </e>
|
||||
104 ;------------------------------------------------------------------------------
|
||||
105
|
||||
106 ; Standard SFR Symbols
|
||||
00E0 107 ACC DATA 0E0H
|
||||
00F0 108 B DATA 0F0H
|
||||
0081 109 SP DATA 81H
|
||||
0082 110 DPL DATA 82H
|
||||
0083 111 DPH DATA 83H
|
||||
112
|
||||
113 NAME ?C_STARTUP
|
||||
114
|
||||
115
|
||||
116 ?C_C51STARTUP SEGMENT CODE
|
||||
117 ?STACK SEGMENT IDATA
|
||||
118
|
||||
---- 119 RSEG ?STACK
|
||||
0000 120 DS 1
|
||||
121
|
||||
122 EXTRN CODE (?C_START)
|
||||
123 PUBLIC ?C_STARTUP
|
||||
A51 MACRO ASSEMBLER STARTUP 05/22/2024 11:36:34 PAGE 3
|
||||
|
||||
124
|
||||
---- 125 CSEG AT 0
|
||||
0000 020000 F 126 ?C_STARTUP: LJMP STARTUP1
|
||||
127
|
||||
---- 128 RSEG ?C_C51STARTUP
|
||||
129
|
||||
0000 130 STARTUP1:
|
||||
131
|
||||
132 IF IDATALEN <> 0
|
||||
0000 787F 133 MOV R0,#IDATALEN - 1
|
||||
0002 E4 134 CLR A
|
||||
0003 F6 135 IDATALOOP: MOV @R0,A
|
||||
0004 D8FD 136 DJNZ R0,IDATALOOP
|
||||
137 ENDIF
|
||||
138
|
||||
139 IF XDATALEN <> 0
|
||||
MOV DPTR,#XDATASTART
|
||||
MOV R7,#LOW (XDATALEN)
|
||||
IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
MOV R6,#HIGH (XDATALEN)
|
||||
ENDIF
|
||||
CLR A
|
||||
XDATALOOP: MOVX @DPTR,A
|
||||
INC DPTR
|
||||
DJNZ R7,XDATALOOP
|
||||
DJNZ R6,XDATALOOP
|
||||
ENDIF
|
||||
153
|
||||
154 IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
157
|
||||
158 IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
166
|
||||
167 IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
172
|
||||
173 IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
179
|
||||
180 IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
184
|
||||
0006 758100 F 185 MOV SP,#?STACK-1
|
||||
186
|
||||
187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
188 ;<h> Code Banking
|
||||
189 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
A51 MACRO ASSEMBLER STARTUP 05/22/2024 11:36:34 PAGE 4
|
||||
|
||||
190
|
||||
|
||||
|
||||
|
||||
|
||||
195 ;</h>
|
||||
0009 020000 F 196 LJMP ?C_START
|
||||
197
|
||||
198 END
|
||||
A51 MACRO ASSEMBLER STARTUP 05/22/2024 11:36:34 PAGE 5
|
||||
|
||||
SYMBOL TABLE LISTING
|
||||
------ ----- -------
|
||||
|
||||
|
||||
N A M E T Y P E V A L U E ATTRIBUTES
|
||||
|
||||
?C_C51STARTUP. . . C SEG 000CH REL=UNIT
|
||||
?C_START . . . . . C ADDR ----- EXT
|
||||
?C_STARTUP . . . . C ADDR 0000H A
|
||||
?STACK . . . . . . I SEG 0001H REL=UNIT
|
||||
ACC. . . . . . . . D ADDR 00E0H A
|
||||
B. . . . . . . . . D ADDR 00F0H A
|
||||
DPH. . . . . . . . D ADDR 0083H A
|
||||
DPL. . . . . . . . D ADDR 0082H A
|
||||
IBPSTACK . . . . . N NUMB 0000H A
|
||||
IBPSTACKTOP. . . . N NUMB 0100H A
|
||||
IDATALEN . . . . . N NUMB 0080H A
|
||||
IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
|
||||
PBPSTACK . . . . . N NUMB 0000H A
|
||||
PBPSTACKTOP. . . . N NUMB 0100H A
|
||||
PDATALEN . . . . . N NUMB 0000H A
|
||||
PDATASTART . . . . N NUMB 0000H A
|
||||
PPAGE. . . . . . . N NUMB 0000H A
|
||||
PPAGEENABLE. . . . N NUMB 0000H A
|
||||
PPAGE_SFR. . . . . D ADDR 00A0H A
|
||||
SP . . . . . . . . D ADDR 0081H A
|
||||
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
|
||||
XBPSTACK . . . . . N NUMB 0000H A
|
||||
XBPSTACKTOP. . . . N NUMB 0000H A
|
||||
XDATALEN . . . . . N NUMB 0000H A
|
||||
XDATASTART . . . . N NUMB 0000H A
|
||||
|
||||
|
||||
REGISTER BANK(S) USED: 0
|
||||
|
||||
|
||||
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
263
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/ZickZack.m51
Executable file
263
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/ZickZack.m51
Executable file
@@ -0,0 +1,263 @@
|
||||
BL51 BANKED LINKER/LOCATER V6.22.4.0 05/22/2024 13:57:42 PAGE 1
|
||||
|
||||
|
||||
BL51 BANKED LINKER/LOCATER V6.22.4.0, INVOKED BY:
|
||||
C:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\STARTUP.obj, .\Objects\main.obj, .\Objects\serIO.obj TO .\Objects\ZickZack PRINT (
|
||||
>> .\Listings\ZickZack.m51) RAMSIZE (256)
|
||||
|
||||
|
||||
MEMORY MODEL: SMALL
|
||||
|
||||
|
||||
INPUT MODULES INCLUDED:
|
||||
.\Objects\STARTUP.obj (?C_STARTUP)
|
||||
.\Objects\main.obj (MAIN)
|
||||
.\Objects\serIO.obj (SERIO)
|
||||
C:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDPTR)
|
||||
|
||||
|
||||
LINK MAP OF MODULE: .\Objects\ZickZack (?C_STARTUP)
|
||||
|
||||
|
||||
TYPE BASE LENGTH RELOCATION SEGMENT NAME
|
||||
-----------------------------------------------------
|
||||
|
||||
* * * * * * * D A T A M E M O R Y * * * * * * *
|
||||
REG 0000H 0008H ABSOLUTE "REG BANK 0"
|
||||
DATA 0008H 000CH UNIT _DATA_GROUP_
|
||||
DATA 0014H 0003H UNIT ?DT?_SERSTRINGOUT?SERIO
|
||||
DATA 0017H 0001H UNIT ?DT?MAIN
|
||||
IDATA 0018H 0001H UNIT ?STACK
|
||||
|
||||
* * * * * * * C O D E M E M O R Y * * * * * * *
|
||||
CODE 0000H 0003H ABSOLUTE
|
||||
0003H 07FDH *** GAP ***
|
||||
CODE 0800H 0088H UNIT ?PR?_DRAWCHRISTMASTREE?MAIN
|
||||
CODE 0888H 002AH UNIT ?PR?_INDENTWITHSPACE?MAIN
|
||||
CODE 08B2H 0028H UNIT ?PR?MAIN?MAIN
|
||||
CODE 08DAH 0021H UNIT ?PR?_SERSTRINGOUT?SERIO
|
||||
CODE 08FBH 0019H UNIT ?C?LIB_CODE
|
||||
CODE 0914H 000FH UNIT ?PR?SERINIT?SERIO
|
||||
CODE 0923H 000CH UNIT ?C_C51STARTUP
|
||||
CODE 092FH 000BH UNIT ?PR?SERIN?SERIO
|
||||
CODE 093AH 0008H UNIT ?PR?SERWAITIN?SERIO
|
||||
CODE 0942H 0008H UNIT ?PR?_SERCHAROUT?SERIO
|
||||
|
||||
|
||||
|
||||
OVERLAY MAP OF MODULE: .\Objects\ZickZack (?C_STARTUP)
|
||||
|
||||
|
||||
SEGMENT DATA_GROUP
|
||||
+--> CALLED SEGMENT START LENGTH
|
||||
---------------------------------------------------
|
||||
?C_C51STARTUP ----- -----
|
||||
+--> ?PR?MAIN?MAIN
|
||||
|
||||
?PR?MAIN?MAIN 0008H 0002H
|
||||
+--> ?PR?SERINIT?SERIO
|
||||
+--> ?PR?SERIN?SERIO
|
||||
+--> ?PR?_DRAWCHRISTMASTREE?MAIN
|
||||
|
||||
BL51 BANKED LINKER/LOCATER V6.22.4.0 05/22/2024 13:57:42 PAGE 2
|
||||
|
||||
|
||||
?PR?_DRAWCHRISTMASTREE?MAIN 000AH 0006H
|
||||
+--> ?PR?_INDENTWITHSPACE?MAIN
|
||||
+--> ?PR?_SERCHAROUT?SERIO
|
||||
|
||||
?PR?_INDENTWITHSPACE?MAIN 0010H 0004H
|
||||
+--> ?PR?_SERCHAROUT?SERIO
|
||||
|
||||
|
||||
|
||||
SYMBOL TABLE OF MODULE: .\Objects\ZickZack (?C_STARTUP)
|
||||
|
||||
VALUE TYPE NAME
|
||||
----------------------------------
|
||||
|
||||
------- MODULE ?C_STARTUP
|
||||
C:0923H SEGMENT ?C_C51STARTUP
|
||||
I:0018H SEGMENT ?STACK
|
||||
C:0000H PUBLIC ?C_STARTUP
|
||||
D:00E0H SYMBOL ACC
|
||||
D:00F0H SYMBOL B
|
||||
D:0083H SYMBOL DPH
|
||||
D:0082H SYMBOL DPL
|
||||
N:0000H SYMBOL IBPSTACK
|
||||
N:0100H SYMBOL IBPSTACKTOP
|
||||
N:0080H SYMBOL IDATALEN
|
||||
C:0926H SYMBOL IDATALOOP
|
||||
N:0000H SYMBOL PBPSTACK
|
||||
N:0100H SYMBOL PBPSTACKTOP
|
||||
N:0000H SYMBOL PDATALEN
|
||||
N:0000H SYMBOL PDATASTART
|
||||
N:0000H SYMBOL PPAGE
|
||||
N:0000H SYMBOL PPAGEENABLE
|
||||
D:00A0H SYMBOL PPAGE_SFR
|
||||
D:0081H SYMBOL SP
|
||||
C:0923H SYMBOL STARTUP1
|
||||
N:0000H SYMBOL XBPSTACK
|
||||
N:0000H SYMBOL XBPSTACKTOP
|
||||
N:0000H SYMBOL XDATALEN
|
||||
N:0000H SYMBOL XDATASTART
|
||||
C:0000H LINE# 126
|
||||
C:0923H LINE# 133
|
||||
C:0925H LINE# 134
|
||||
C:0926H LINE# 135
|
||||
C:0927H LINE# 136
|
||||
C:0929H LINE# 185
|
||||
C:092CH LINE# 196
|
||||
------- ENDMOD ?C_STARTUP
|
||||
|
||||
------- MODULE MAIN
|
||||
C:0000H SYMBOL _ICE_DUMMY_
|
||||
C:0888H PUBLIC _indentWithSpace
|
||||
C:0800H PUBLIC _drawChristmastree
|
||||
D:0017H PUBLIC taste
|
||||
C:08B2H PUBLIC main
|
||||
------- PROC _INDENTWITHSPACE
|
||||
D:0010H SYMBOL amount
|
||||
------- DO
|
||||
BL51 BANKED LINKER/LOCATER V6.22.4.0 05/22/2024 13:57:42 PAGE 3
|
||||
|
||||
|
||||
D:0012H SYMBOL g
|
||||
------- ENDDO
|
||||
C:0888H LINE# 8
|
||||
C:088CH LINE# 10
|
||||
C:08A2H LINE# 11
|
||||
C:08B1H LINE# 13
|
||||
------- ENDPROC _INDENTWITHSPACE
|
||||
------- PROC _DRAWCHRISTMASTREE
|
||||
D:000AH SYMBOL width
|
||||
------- DO
|
||||
D:000CH SYMBOL i
|
||||
D:000EH SYMBOL j
|
||||
------- ENDDO
|
||||
C:0800H LINE# 14
|
||||
C:0804H LINE# 17
|
||||
C:081AH LINE# 18
|
||||
C:0828H LINE# 20
|
||||
C:084CH LINE# 21
|
||||
C:085DH LINE# 22
|
||||
C:0867H LINE# 23
|
||||
C:086CH LINE# 24
|
||||
C:0873H LINE# 25
|
||||
C:0878H LINE# 26
|
||||
C:087DH LINE# 27
|
||||
C:0887H LINE# 28
|
||||
------- ENDPROC _DRAWCHRISTMASTREE
|
||||
------- PROC MAIN
|
||||
------- DO
|
||||
D:0008H SYMBOL hasChar
|
||||
------- ENDDO
|
||||
C:08B2H LINE# 30
|
||||
C:08B2H LINE# 33
|
||||
C:08B7H LINE# 35
|
||||
C:08BAH LINE# 36
|
||||
C:08C0H LINE# 37
|
||||
C:08C5H LINE# 38
|
||||
C:08C9H LINE# 39
|
||||
C:08CFH LINE# 40
|
||||
C:08D0H LINE# 41
|
||||
C:08D0H LINE# 42
|
||||
C:08D7H LINE# 43
|
||||
C:08D9H LINE# 45
|
||||
------- ENDPROC MAIN
|
||||
------- ENDMOD MAIN
|
||||
|
||||
------- MODULE SERIO
|
||||
C:0000H SYMBOL _ICE_DUMMY_
|
||||
D:00BAH PUBLIC SRELH
|
||||
D:0090H PUBLIC P1
|
||||
C:08DAH PUBLIC _serStringOut
|
||||
D:00B0H PUBLIC P3
|
||||
D:00AAH PUBLIC SRELL
|
||||
D:00E8H PUBLIC P4
|
||||
C:092FH PUBLIC serIn
|
||||
B:00D8H.7 PUBLIC BD
|
||||
C:0942H PUBLIC _serCharOut
|
||||
D:00A8H PUBLIC IEN0
|
||||
BL51 BANKED LINKER/LOCATER V6.22.4.0 05/22/2024 13:57:42 PAGE 4
|
||||
|
||||
|
||||
D:00B8H PUBLIC IEN1
|
||||
D:00D8H PUBLIC ADCON0
|
||||
B:0098H.0 PUBLIC RI
|
||||
C:093AH PUBLIC serWaitIn
|
||||
B:0098H.1 PUBLIC TI
|
||||
D:0087H PUBLIC PCON
|
||||
D:0099H PUBLIC SBUF
|
||||
D:0098H PUBLIC SCON
|
||||
D:0088H PUBLIC TCON
|
||||
C:0914H PUBLIC serInit
|
||||
D:00C8H PUBLIC T2CON
|
||||
D:00D0H PUBLIC PSW
|
||||
D:00C0H PUBLIC IRCON
|
||||
------- PROC SERIN
|
||||
C:092FH LINE# 22
|
||||
C:092FH LINE# 25
|
||||
C:0932H LINE# 27
|
||||
C:0934H LINE# 29
|
||||
C:0937H LINE# 30
|
||||
C:0937H LINE# 32
|
||||
C:0939H LINE# 33
|
||||
C:0939H LINE# 34
|
||||
------- ENDPROC SERIN
|
||||
------- PROC SERWAITIN
|
||||
C:093AH LINE# 38
|
||||
C:093AH LINE# 41
|
||||
C:093DH LINE# 43
|
||||
C:093FH LINE# 45
|
||||
C:0941H LINE# 46
|
||||
------- ENDPROC SERWAITIN
|
||||
------- PROC _SERCHAROUT
|
||||
D:0007H SYMBOL zeichen
|
||||
C:0942H LINE# 51
|
||||
C:0942H LINE# 54
|
||||
C:0945H LINE# 56
|
||||
C:0947H LINE# 59
|
||||
C:0949H LINE# 60
|
||||
------- ENDPROC _SERCHAROUT
|
||||
------- PROC _SERSTRINGOUT
|
||||
D:0014H SYMBOL string
|
||||
------- DO
|
||||
D:0006H SYMBOL z
|
||||
------- ENDDO
|
||||
C:08DAH LINE# 63
|
||||
C:08E0H LINE# 66
|
||||
C:08F4H LINE# 67
|
||||
C:08F8H LINE# 68
|
||||
C:08FAH LINE# 69
|
||||
------- ENDPROC _SERSTRINGOUT
|
||||
------- PROC SERINIT
|
||||
C:0914H LINE# 72
|
||||
C:0914H LINE# 84
|
||||
C:0917H LINE# 86
|
||||
C:091AH LINE# 88
|
||||
C:091DH LINE# 90
|
||||
C:091FH LINE# 103
|
||||
C:0922H LINE# 104
|
||||
BL51 BANKED LINKER/LOCATER V6.22.4.0 05/22/2024 13:57:42 PAGE 5
|
||||
|
||||
|
||||
------- ENDPROC SERINIT
|
||||
------- ENDMOD SERIO
|
||||
|
||||
------- MODULE ?C?CLDPTR
|
||||
C:08FBH PUBLIC ?C?CLDPTR
|
||||
------- ENDMOD ?C?CLDPTR
|
||||
|
||||
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
|
||||
SEGMENT: ?PR?SERWAITIN?SERIO
|
||||
|
||||
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
|
||||
SEGMENT: ?PR?_SERSTRINGOUT?SERIO
|
||||
|
||||
******************************************************************************
|
||||
* RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 0134H BYTE (15%) *
|
||||
******************************************************************************
|
||||
|
||||
Program Size: data=25.0 xdata=0 code=333
|
||||
LINK/LOCATE RUN COMPLETE. 2 WARNING(S), 0 ERROR(S)
|
||||
77
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/main.lst
Executable file
77
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/main.lst
Executable file
@@ -0,0 +1,77 @@
|
||||
C51 COMPILER V9.60.7.0 MAIN 05/22/2024 13:57:29 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE MAIN
|
||||
OBJECT MODULE PLACED IN .\Objects\main.obj
|
||||
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE main.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\main
|
||||
-.lst) TABS(2) OBJECT(.\Objects\main.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 // Clear screen and set cursor home
|
||||
2 #include <stdio.h>
|
||||
3 #include <serIO.h>
|
||||
4
|
||||
5
|
||||
6 unsigned char taste;
|
||||
7
|
||||
8 void indentWithSpace(int amount) {
|
||||
9 1 int g;
|
||||
10 1 for (g = 0; g < (amount); g++)
|
||||
11 1 serCharOut(' '); // indenting
|
||||
12 1 return;
|
||||
13 1 }
|
||||
14 void drawChristmastree(int width) {
|
||||
15 1 int i;
|
||||
16 1 int j;
|
||||
17 1 for (i = 0; i < width; i++) {
|
||||
18 2 indentWithSpace((width-i));
|
||||
19 2
|
||||
20 2 for (j = 0; j < ((2 * i) + 1); j++) { // draws '='
|
||||
21 3 if (i > 0) serCharOut('=');
|
||||
22 3 }
|
||||
23 2 serCharOut('\n');
|
||||
24 2 indentWithSpace(width);
|
||||
25 2 serCharOut('='); // Stamm
|
||||
26 2 serCharOut('\n');
|
||||
27 2 }
|
||||
28 1 }
|
||||
29
|
||||
30 void main() {
|
||||
31 1
|
||||
32 1
|
||||
33 1 int hasChar = 0;
|
||||
34 1
|
||||
35 1 serInit();
|
||||
36 1 while(hasChar == 0) {
|
||||
37 2 taste = serIn();
|
||||
38 2 if (taste != '\0') {
|
||||
39 3 hasChar = 1;
|
||||
40 3 break;
|
||||
41 3 }
|
||||
42 2 drawChristmastree(40);
|
||||
43 2 }
|
||||
44 1 return;
|
||||
45 1 }
|
||||
46
|
||||
47 /* Gedanken zur Funktionalen Aufteilung und Erweiterung
|
||||
48 - eigenst<73>ndige Funktion zum indenten ; Parameter: (int Anzahl ' ' (LEERZEICHEN))
|
||||
49 - recursivit<69>t hier besonders interessant zum Zeichnen der Charakterketten Parameter: (int Schleifendurc
|
||||
-hl<68>ufe)
|
||||
50 */
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
C51 COMPILER V9.60.7.0 MAIN 05/22/2024 13:57:29 PAGE 2
|
||||
|
||||
CODE SIZE = 218 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 1 12
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
130
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/serIO.lst
Executable file
130
Semester 4/MICONT/Aufgabenblätter/ZickZack/Listings/serIO.lst
Executable file
@@ -0,0 +1,130 @@
|
||||
C51 COMPILER V9.60.7.0 SERIO 05/22/2024 11:53:01 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE SERIO
|
||||
OBJECT MODULE PLACED IN .\Objects\serIO.obj
|
||||
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE serIO.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\ser
|
||||
-IO.lst) TABS(2) OBJECT(.\Objects\serIO.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 /*
|
||||
2 * serIO.c:
|
||||
3 * Eingabe und Ausgabe ueber die serielle Schnittstelle.
|
||||
4 *
|
||||
5 * Jan Bredereke, 2019, 2024
|
||||
6 */
|
||||
7
|
||||
8 /* Die eigene Header-Datei: */
|
||||
9 #include "serIO.h"
|
||||
10
|
||||
11 /* Die Definitionen von Special-Funktion-Registern fuer den
|
||||
12 * Mikrocontroller C515C: */
|
||||
13 #include <REG515C.H>
|
||||
14
|
||||
15
|
||||
16 /* Die oeffentlichen Methoden: */
|
||||
17 /* --------------------------- */
|
||||
18
|
||||
19 /* Holt ein einzelnes Zeichen von der seriellen Schnittstelle, ohne
|
||||
20 * darauf zu warten. */
|
||||
21 /* Falls kein Zeichen da ist, wird Null zurueckgegeben. */
|
||||
22 char serIn(void) {
|
||||
23 1 /* Pruefe, ob ein Zeichen gelesen worden ist.
|
||||
24 1 * (Dann wird das Receiver-Interrupt-Flag gesetzt.) */
|
||||
25 1 if (RI) {
|
||||
26 2 /* Loesche das Receiver-Interrupt-Flag wieder. */
|
||||
27 2 RI = 0;
|
||||
28 2 /* Hole das Zeichen und gib es zurueck. */
|
||||
29 2 return SBUF;
|
||||
30 2 } else {
|
||||
31 2 /* Sonst gib Null zurueck. */
|
||||
32 2 return '\0';
|
||||
33 2 }
|
||||
34 1 }
|
||||
35
|
||||
36 /* Holt ein einzelnes Zeichen von der seriellen Schnittstelle und
|
||||
37 * wartet ggf., bis eines da ist. */
|
||||
38 char serWaitIn(void) {
|
||||
39 1 /* Warte, bis ein Zeichen empfangen wurde. (Dann wird das
|
||||
40 1 * Receiver-Interrupt-Flag gesetzt.) */
|
||||
41 1 while (!RI);
|
||||
42 1 /* Loesche das Receiver-Interrupt-Flag wieder. */
|
||||
43 1 RI = 0;
|
||||
44 1 /* Hole das empfangene Zeichen und gib es zurueck. */
|
||||
45 1 return SBUF;
|
||||
46 1 }
|
||||
47
|
||||
48 /* Gibt ein Zeichen ueber die serielle Schnittstelle aus. */
|
||||
49 /* Wartet nur, falls zur Zeit eine fruehrere solche Ausgabeoperation
|
||||
50 * noch nicht abgeschlossen ist. */
|
||||
51 void serCharOut(char zeichen) {
|
||||
52 1 /* Warte ggf., bis das vorige Zeichen fertig ausgegeben ist.
|
||||
53 1 * (Dann wird das Transmitter-Interrupt-Flag gesetzt.) */
|
||||
54 1 while (!TI);
|
||||
C51 COMPILER V9.60.7.0 SERIO 05/22/2024 11:53:01 PAGE 2
|
||||
|
||||
55 1 /* Loesche das Transmitter-Interrupt-Flag wieder. */
|
||||
56 1 TI = 0;
|
||||
57 1 /* Lege das Zeichen in Sendepuffer und beginne die Uebertragung, ohne
|
||||
58 1 * auf deren Ende zu Warten. */
|
||||
59 1 SBUF = zeichen;
|
||||
60 1 }
|
||||
61
|
||||
62 /* Gibt einen String ueber die serielle Schnittstelle aus. */
|
||||
63 void serStringOut(char *string) {
|
||||
64 1 char z; /* Das naechste zu druckende Zeichen */
|
||||
65 1
|
||||
66 1 while (z = *string++) {
|
||||
67 2 serCharOut(z);
|
||||
68 2 }
|
||||
69 1 }
|
||||
70
|
||||
71 /* Initialisiert die Eingabe+Ausgabe ueber die serielle Schnittstelle. */
|
||||
72 void serInit(void) {
|
||||
73 1 /* Initialisiert die serielle Schnittstelle des C515C
|
||||
74 1 * auf 9600 Baud, 1 Stoppbit, kein Paritybit.
|
||||
75 1 * Ein Aufruf ist bei der echten Mikrocontrollerkarte im Labor
|
||||
76 1 * nicht noetig (aber auch nicht schaedlich), da fuer das Laden des
|
||||
77 1 * Programms schon eine Initialisierung durch uVision erfolgt.
|
||||
78 1 * Siehe auch das C515C-User-Manual, Seite 6-48ff.
|
||||
79 1 */
|
||||
80 1
|
||||
81 1 /* Laedt Baud-Rate-Zaehler, oberer Teil
|
||||
82 1 * (Formel im User-Manual auf S. 6-54).
|
||||
83 1 */
|
||||
84 1 SRELH = 0x03;
|
||||
85 1 /* Laedt Baud-Rate-Zaehler, unterer Teil, und setze Zaehler zurueck. */
|
||||
86 1 SRELL = 0xbf;
|
||||
87 1 /* Setzt SMOD-Bit im Register PCON (verdoppelt Baud-Rate). */
|
||||
88 1 PCON |= 0x80;
|
||||
89 1 /* Setzt BD-Bit im Register ADCON0 (Baud rate generator enable). */
|
||||
90 1 BD = 1;
|
||||
91 1 /* Setzt Bits im Register SCON (von links nach rechts):
|
||||
92 1 * SM0=0, SM1=1, SM2=0:
|
||||
93 1 * serial mode 1, also 8-Bit-UART
|
||||
94 1 * mit variabler Baud-Rate,
|
||||
95 1 * einem Stoppbit und keinem
|
||||
96 1 * Paritybit.
|
||||
97 1 * REN=1: Receiver enable.
|
||||
98 1 * TB8=0: unbenutzt (9. Sendebit).
|
||||
99 1 * RB8=0: unbenutzt (9. Empfangsbit).
|
||||
100 1 * TI=1: Transmitter-Interrupt-Flag.
|
||||
101 1 * RI=0: Receiver-Interrupt-Flag.
|
||||
102 1 */
|
||||
103 1 SCON = 0x52;
|
||||
104 1 }
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 75 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 3
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/STARTUP.obj
Executable file
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/STARTUP.obj
Executable file
Binary file not shown.
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/ZickZack
Executable file
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/ZickZack
Executable file
Binary file not shown.
36
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/ZickZack.build_log.htm
Executable file
36
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/ZickZack.build_log.htm
Executable file
@@ -0,0 +1,36 @@
|
||||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>µVision Build Log</h1>
|
||||
<h2>Tool Versions:</h2>
|
||||
IDE-Version: µVision V5.38.0.0
|
||||
Copyright (C) 2022 ARM Ltd and ARM Germany GmbH. All rights reserved.
|
||||
License Information: Mathys Touzet, -, LIC=----
|
||||
|
||||
Tool Versions:
|
||||
Toolchain: PK51 Prof. Develpers Kit Version: 9.60.7.0
|
||||
Toolchain Path: C:\Keil_v5\C51\BIN
|
||||
C Compiler: C51.exe V9.60.7.0
|
||||
Assembler: A51.exe V8.2.7.0
|
||||
Linker/Locator: BL51.exe V6.22.4.0
|
||||
Library Manager: LIB51.exe V4.30.1.0
|
||||
Hex Converter: OH51.exe V2.7.0.0
|
||||
CPU DLL: S8051.DLL V3.125.1.0
|
||||
Dialog DLL: D500.DLL V2.52.1.0
|
||||
<h2>Project:</h2>
|
||||
C:\Users\chemical\Documents\BredisLieblingsOrdner\ZickZack\ZickZack.uvproj
|
||||
Project File Date: 05/22/2024
|
||||
|
||||
<h2>Output:</h2>
|
||||
Build target 'Target 1'
|
||||
linking...
|
||||
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
|
||||
SEGMENT: ?PR?SERWAITIN?SERIO
|
||||
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
|
||||
SEGMENT: ?PR?_SERSTRINGOUT?SERIO
|
||||
Program Size: data=25.0 xdata=0 code=333
|
||||
".\Objects\ZickZack" - 0 Error(s), 2 Warning(s).
|
||||
Build Time Elapsed: 00:00:00
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
5
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/ZickZack.lnp
Executable file
5
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/ZickZack.lnp
Executable file
@@ -0,0 +1,5 @@
|
||||
".\Objects\STARTUP.obj",
|
||||
".\Objects\main.obj",
|
||||
".\Objects\serIO.obj"
|
||||
TO ".\Objects\ZickZack"
|
||||
PRINT(".\Listings\ZickZack.m51") RAMSIZE(256)
|
||||
1
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/main.__i
Executable file
1
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/main.__i
Executable file
@@ -0,0 +1 @@
|
||||
"main.c" OPTIMIZE (8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\main.lst) TABS (2) OBJECT(.\Objects\main.obj)
|
||||
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/main.obj
Executable file
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/main.obj
Executable file
Binary file not shown.
1
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/serIO.__i
Executable file
1
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/serIO.__i
Executable file
@@ -0,0 +1 @@
|
||||
"serIO.c" OPTIMIZE (8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\serIO.lst) TABS (2) OBJECT(.\Objects\serIO.obj)
|
||||
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/serIO.obj
Executable file
BIN
Semester 4/MICONT/Aufgabenblätter/ZickZack/Objects/serIO.obj
Executable file
Binary file not shown.
198
Semester 4/MICONT/Aufgabenblätter/ZickZack/STARTUP.A51
Executable file
198
Semester 4/MICONT/Aufgabenblätter/ZickZack/STARTUP.A51
Executable file
@@ -0,0 +1,198 @@
|
||||
$NOMOD51
|
||||
;------------------------------------------------------------------------------
|
||||
; This file is part of the C51 Compiler package
|
||||
; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
; Version 8.01
|
||||
;
|
||||
; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
;------------------------------------------------------------------------------
|
||||
; STARTUP.A51: This code is executed after processor reset.
|
||||
;
|
||||
; To translate this file use A51 with the following invocation:
|
||||
;
|
||||
; A51 STARTUP.A51
|
||||
;
|
||||
; To link the modified STARTUP.OBJ file to your application use the following
|
||||
; Lx51 invocation:
|
||||
;
|
||||
; Lx51 your object file list, STARTUP.OBJ controls
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; User-defined <h> Power-On Initialization of Memory
|
||||
;
|
||||
; With the following EQU statements the initialization of memory
|
||||
; at processor reset can be defined:
|
||||
;
|
||||
; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
IDATALEN EQU 80H
|
||||
;
|
||||
; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
; <i> The absolute start address of XDATA memory
|
||||
XDATASTART EQU 0
|
||||
;
|
||||
; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
; <i> The length of XDATA memory in bytes.
|
||||
XDATALEN EQU 0
|
||||
;
|
||||
; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
; <i> The absolute start address of PDATA memory
|
||||
PDATASTART EQU 0H
|
||||
;
|
||||
; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
; <i> The length of PDATA memory in bytes.
|
||||
PDATALEN EQU 0H
|
||||
;
|
||||
;</h>
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;<h> Reentrant Stack Initialization
|
||||
;
|
||||
; The following EQU statements define the stack pointer for reentrant
|
||||
; functions and initialized it:
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the SMALL model.
|
||||
IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
; </h>
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the LARGE model.
|
||||
XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
; </h>
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
;
|
||||
; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
; </h>
|
||||
;</h>
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
; <e>Compact Model Page Definition
|
||||
;
|
||||
; <i>Define the XDATA page used for PDATA variables.
|
||||
; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
;
|
||||
; Enable pdata memory page initalization
|
||||
PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
;
|
||||
; <o> PPAGE number <0x0-0xFF>
|
||||
; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
PPAGE EQU 0
|
||||
;
|
||||
; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
; <i> most 8051 variants use P2 as uppermost address byte
|
||||
PPAGE_SFR DATA 0A0H
|
||||
;
|
||||
; </e>
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
; Standard SFR Symbols
|
||||
ACC DATA 0E0H
|
||||
B DATA 0F0H
|
||||
SP DATA 81H
|
||||
DPL DATA 82H
|
||||
DPH DATA 83H
|
||||
|
||||
NAME ?C_STARTUP
|
||||
|
||||
|
||||
?C_C51STARTUP SEGMENT CODE
|
||||
?STACK SEGMENT IDATA
|
||||
|
||||
RSEG ?STACK
|
||||
DS 1
|
||||
|
||||
EXTRN CODE (?C_START)
|
||||
PUBLIC ?C_STARTUP
|
||||
|
||||
CSEG AT 0
|
||||
?C_STARTUP: LJMP STARTUP1
|
||||
|
||||
RSEG ?C_C51STARTUP
|
||||
|
||||
STARTUP1:
|
||||
|
||||
IF IDATALEN <> 0
|
||||
MOV R0,#IDATALEN - 1
|
||||
CLR A
|
||||
IDATALOOP: MOV @R0,A
|
||||
DJNZ R0,IDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF XDATALEN <> 0
|
||||
MOV DPTR,#XDATASTART
|
||||
MOV R7,#LOW (XDATALEN)
|
||||
IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
MOV R6,#HIGH (XDATALEN)
|
||||
ENDIF
|
||||
CLR A
|
||||
XDATALOOP: MOVX @DPTR,A
|
||||
INC DPTR
|
||||
DJNZ R7,XDATALOOP
|
||||
DJNZ R6,XDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
|
||||
IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
MOV SP,#?STACK-1
|
||||
|
||||
; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
;<h> Code Banking
|
||||
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
#if 0
|
||||
; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
|
||||
EXTRN CODE (?B_SWITCH0)
|
||||
CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
|
||||
#endif
|
||||
;</h>
|
||||
LJMP ?C_START
|
||||
|
||||
END
|
||||
3646
Semester 4/MICONT/Aufgabenblätter/ZickZack/ZickZack.uvgui.chemical
Executable file
3646
Semester 4/MICONT/Aufgabenblätter/ZickZack/ZickZack.uvgui.chemical
Executable file
File diff suppressed because one or more lines are too long
228
Semester 4/MICONT/Aufgabenblätter/ZickZack/ZickZack.uvopt
Executable file
228
Semester 4/MICONT/Aufgabenblätter/ZickZack/ZickZack.uvopt
Executable file
@@ -0,0 +1,228 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp; *.cc; *.cxx</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>24000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>0</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>0</CCode>
|
||||
<CListInc>0</CListInc>
|
||||
<CSymb>0</CSymb>
|
||||
<LinkerCodeListing>0</LinkerCodeListing>
|
||||
</ListingPage>
|
||||
<OPTXL>
|
||||
<LMap>1</LMap>
|
||||
<LComments>1</LComments>
|
||||
<LGenerateSymbols>1</LGenerateSymbols>
|
||||
<LLibSym>1</LLibSym>
|
||||
<LLines>1</LLines>
|
||||
<LLocSym>1</LLocSym>
|
||||
<LPubSym>1</LPubSym>
|
||||
<LXref>0</LXref>
|
||||
<LExpSel>0</LExpSel>
|
||||
</OPTXL>
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>255</CpuCode>
|
||||
<Books>
|
||||
<Book>
|
||||
<Number>0</Number>
|
||||
<Title>C500 Instruction Set Manual</Title>
|
||||
<Path>DATASHTS\INFINEON\C500_AISM.PDF</Path>
|
||||
</Book>
|
||||
<Book>
|
||||
<Number>1</Number>
|
||||
<Title>User's Manual</Title>
|
||||
<Path>DATASHTS\INFINEON\C515_UM.PDF</Path>
|
||||
</Book>
|
||||
</Books>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>-1</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon></pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGD500</Key>
|
||||
<Name>(98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(86=-1,-1,-1,-1,0)(87=-1,-1,-1,-1,0)(5049=-1,-1,-1,-1,0)(5058=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)(5045=-1,-1,-1,-1,0)(5046=-1,-1,-1,-1,0)(5059=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>1</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>1</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
<AscS1>0</AscS1>
|
||||
<AscS2>0</AscS2>
|
||||
<AscS3>0</AscS3>
|
||||
<aSer3>0</aSer3>
|
||||
<eProf>0</eProf>
|
||||
<aLa>0</aLa>
|
||||
<aPa1>0</aPa1>
|
||||
<AscS4>0</AscS4>
|
||||
<aSer4>1</aSer4>
|
||||
<StkLoc>0</StkLoc>
|
||||
<TrcWin>0</TrcWin>
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
<Group>
|
||||
<GroupName>Source Group 1</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\STARTUP.A51</PathWithFileName>
|
||||
<FilenameWithoutPath>STARTUP.A51</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\serIO.c</PathWithFileName>
|
||||
<FilenameWithoutPath>serIO.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
||||
400
Semester 4/MICONT/Aufgabenblätter/ZickZack/ZickZack.uvproj
Executable file
400
Semester 4/MICONT/Aufgabenblätter/ZickZack/ZickZack.uvproj
Executable file
@@ -0,0 +1,400 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>C515-L</Device>
|
||||
<Vendor>Infineon</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) CLOCK(24000000)</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>2909</DeviceId>
|
||||
<RegisterFile>REG515.H</RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile></SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath>Infineon\</RegisterFilePath>
|
||||
<DBRegisterFilePath>Infineon\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>ZickZack</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>0</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
<BankNo>65535</BankNo>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>S8051.DLL</SimDllName>
|
||||
<SimDllArguments></SimDllArguments>
|
||||
<SimDlgDll>D500.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-p515</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>T500.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-p515</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>-1</TargetSelection>
|
||||
<SimDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
</SimDlls>
|
||||
<TargetDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
<Driver></Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>0</HadXRAM>
|
||||
<HadIROM>0</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>0</Modp2>
|
||||
<Mod517dp>0</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>0</Mdu_R515>
|
||||
<Mdu_F120>0</Mdu_F120>
|
||||
<Psoc>0</Psoc>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<hadIROM3>0</hadIROM3>
|
||||
<ModSmx2>0</ModSmx2>
|
||||
<cBanks>0</cBanks>
|
||||
<xBanks>0</xBanks>
|
||||
<OnChipMemories>
|
||||
<RCB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>1</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Source Group 1</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>STARTUP.A51</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\STARTUP.A51</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>serIO.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\serIO.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
||||
50
Semester 4/MICONT/Aufgabenblätter/ZickZack/main.c
Executable file
50
Semester 4/MICONT/Aufgabenblätter/ZickZack/main.c
Executable file
@@ -0,0 +1,50 @@
|
||||
// Clear screen and set cursor home
|
||||
#include <stdio.h>
|
||||
#include <serIO.h>
|
||||
|
||||
|
||||
unsigned char taste;
|
||||
|
||||
void indentWithSpace(int amount) {
|
||||
int g;
|
||||
for (g = 0; g < (amount); g++)
|
||||
serCharOut(' '); // indenting
|
||||
return;
|
||||
}
|
||||
void drawChristmastree(int width) {
|
||||
int i;
|
||||
int j;
|
||||
for (i = 0; i < width; i++) {
|
||||
indentWithSpace((width-i));
|
||||
|
||||
for (j = 0; j < ((2 * i) + 1); j++) { // draws '='
|
||||
if (i > 0) serCharOut('=');
|
||||
}
|
||||
serCharOut('\n');
|
||||
indentWithSpace(width);
|
||||
serCharOut('='); // Stamm
|
||||
serCharOut('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
|
||||
int hasChar = 0;
|
||||
|
||||
serInit();
|
||||
while(hasChar == 0) {
|
||||
taste = serIn();
|
||||
if (taste != '\0') {
|
||||
hasChar = 1;
|
||||
break;
|
||||
}
|
||||
drawChristmastree(40);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* Gedanken zur Funktionalen Aufteilung und Erweiterung
|
||||
- eigenst<73>ndige Funktion zum indenten ; Parameter: (int Anzahl ' ' (LEERZEICHEN))
|
||||
- recursivit<69>t hier besonders interessant zum Zeichnen der Charakterketten Parameter: (int Schleifendurchl<68>ufe)
|
||||
*/
|
||||
104
Semester 4/MICONT/Aufgabenblätter/ZickZack/serIO.c
Executable file
104
Semester 4/MICONT/Aufgabenblätter/ZickZack/serIO.c
Executable file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* serIO.c:
|
||||
* Eingabe und Ausgabe ueber die serielle Schnittstelle.
|
||||
*
|
||||
* Jan Bredereke, 2019, 2024
|
||||
*/
|
||||
|
||||
/* Die eigene Header-Datei: */
|
||||
#include "serIO.h"
|
||||
|
||||
/* Die Definitionen von Special-Funktion-Registern fuer den
|
||||
* Mikrocontroller C515C: */
|
||||
#include <REG515C.H>
|
||||
|
||||
|
||||
/* Die oeffentlichen Methoden: */
|
||||
/* --------------------------- */
|
||||
|
||||
/* Holt ein einzelnes Zeichen von der seriellen Schnittstelle, ohne
|
||||
* darauf zu warten. */
|
||||
/* Falls kein Zeichen da ist, wird Null zurueckgegeben. */
|
||||
char serIn(void) {
|
||||
/* Pruefe, ob ein Zeichen gelesen worden ist.
|
||||
* (Dann wird das Receiver-Interrupt-Flag gesetzt.) */
|
||||
if (RI) {
|
||||
/* Loesche das Receiver-Interrupt-Flag wieder. */
|
||||
RI = 0;
|
||||
/* Hole das Zeichen und gib es zurueck. */
|
||||
return SBUF;
|
||||
} else {
|
||||
/* Sonst gib Null zurueck. */
|
||||
return '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* Holt ein einzelnes Zeichen von der seriellen Schnittstelle und
|
||||
* wartet ggf., bis eines da ist. */
|
||||
char serWaitIn(void) {
|
||||
/* Warte, bis ein Zeichen empfangen wurde. (Dann wird das
|
||||
* Receiver-Interrupt-Flag gesetzt.) */
|
||||
while (!RI);
|
||||
/* Loesche das Receiver-Interrupt-Flag wieder. */
|
||||
RI = 0;
|
||||
/* Hole das empfangene Zeichen und gib es zurueck. */
|
||||
return SBUF;
|
||||
}
|
||||
|
||||
/* Gibt ein Zeichen ueber die serielle Schnittstelle aus. */
|
||||
/* Wartet nur, falls zur Zeit eine fruehrere solche Ausgabeoperation
|
||||
* noch nicht abgeschlossen ist. */
|
||||
void serCharOut(char zeichen) {
|
||||
/* Warte ggf., bis das vorige Zeichen fertig ausgegeben ist.
|
||||
* (Dann wird das Transmitter-Interrupt-Flag gesetzt.) */
|
||||
while (!TI);
|
||||
/* Loesche das Transmitter-Interrupt-Flag wieder. */
|
||||
TI = 0;
|
||||
/* Lege das Zeichen in Sendepuffer und beginne die Uebertragung, ohne
|
||||
* auf deren Ende zu Warten. */
|
||||
SBUF = zeichen;
|
||||
}
|
||||
|
||||
/* Gibt einen String ueber die serielle Schnittstelle aus. */
|
||||
void serStringOut(char *string) {
|
||||
char z; /* Das naechste zu druckende Zeichen */
|
||||
|
||||
while (z = *string++) {
|
||||
serCharOut(z);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialisiert die Eingabe+Ausgabe ueber die serielle Schnittstelle. */
|
||||
void serInit(void) {
|
||||
/* Initialisiert die serielle Schnittstelle des C515C
|
||||
* auf 9600 Baud, 1 Stoppbit, kein Paritybit.
|
||||
* Ein Aufruf ist bei der echten Mikrocontrollerkarte im Labor
|
||||
* nicht noetig (aber auch nicht schaedlich), da fuer das Laden des
|
||||
* Programms schon eine Initialisierung durch uVision erfolgt.
|
||||
* Siehe auch das C515C-User-Manual, Seite 6-48ff.
|
||||
*/
|
||||
|
||||
/* Laedt Baud-Rate-Zaehler, oberer Teil
|
||||
* (Formel im User-Manual auf S. 6-54).
|
||||
*/
|
||||
SRELH = 0x03;
|
||||
/* Laedt Baud-Rate-Zaehler, unterer Teil, und setze Zaehler zurueck. */
|
||||
SRELL = 0xbf;
|
||||
/* Setzt SMOD-Bit im Register PCON (verdoppelt Baud-Rate). */
|
||||
PCON |= 0x80;
|
||||
/* Setzt BD-Bit im Register ADCON0 (Baud rate generator enable). */
|
||||
BD = 1;
|
||||
/* Setzt Bits im Register SCON (von links nach rechts):
|
||||
* SM0=0, SM1=1, SM2=0:
|
||||
* serial mode 1, also 8-Bit-UART
|
||||
* mit variabler Baud-Rate,
|
||||
* einem Stoppbit und keinem
|
||||
* Paritybit.
|
||||
* REN=1: Receiver enable.
|
||||
* TB8=0: unbenutzt (9. Sendebit).
|
||||
* RB8=0: unbenutzt (9. Empfangsbit).
|
||||
* TI=1: Transmitter-Interrupt-Flag.
|
||||
* RI=0: Receiver-Interrupt-Flag.
|
||||
*/
|
||||
SCON = 0x52;
|
||||
}
|
||||
36
Semester 4/MICONT/Aufgabenblätter/ZickZack/serIO.h
Executable file
36
Semester 4/MICONT/Aufgabenblätter/ZickZack/serIO.h
Executable file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* serIO.c:
|
||||
* Header-Datei fuer die
|
||||
* Eingabe und Ausgabe ueber die serielle Schnittstelle.
|
||||
*
|
||||
* Jan Bredereke, 2019, 2024
|
||||
*/
|
||||
|
||||
#ifndef SERIO_H
|
||||
#define SERIO_H
|
||||
|
||||
|
||||
/* Die oeffentlichen Methoden: */
|
||||
/* --------------------------- */
|
||||
|
||||
/* Holt ein einzelnes Zeichen von der seriellen Schnittstelle, ohne
|
||||
* darauf zu warten. */
|
||||
/* Falls kein Zeichen da ist, wird Null zurueckgegeben. */
|
||||
char serIn(void);
|
||||
|
||||
/* Holt ein einzelnes Zeichen von der seriellen Schnittstelle und
|
||||
* wartet ggf., bis eines da ist. */
|
||||
char serWaitIn(void);
|
||||
|
||||
/* Gibt ein Zeichen ueber die serielle Schnittstelle aus. */
|
||||
/* Wartet nur, falls zur Zeit eine fruehrere solche Ausgabeoperation
|
||||
* noch nicht abgeschlossen ist. */
|
||||
void serCharOut(char zeichen);
|
||||
|
||||
/* Gibt einen String ueber die serielle Schnittstelle aus. */
|
||||
void serStringOut(char *string);
|
||||
|
||||
/* Initialisiert die Eingabe+Ausgabe ueber die serielle Schnittstelle. */
|
||||
void serInit(void);
|
||||
|
||||
#endif
|
||||
34
Semester 4/MICONT/Labor 02.md
Executable file
34
Semester 4/MICONT/Labor 02.md
Executable file
@@ -0,0 +1,34 @@
|
||||
## Versuchsdurchführungen
|
||||
### Verkabelung
|
||||
Folgende Verkabelung vornehmen:
|
||||
|
||||
| Steckerfarbe | Bedeutung | Position |
|
||||
| ------------ | --------- | -------------------------------------------------------- |
|
||||
| rot | +$5$ V | ganz hinten, hinter "7", Schrift "+5V" ist fast verdeckt |
|
||||
| grün | SCL | Port 4.1 |
|
||||
| blau | SDA | Port 4.0 |
|
||||
| schwarz | GND | ganz vorne mit "GND" beschriftet |
|
||||
- Mikrocontroller einschalten
|
||||
## Einstellungen Messsoftware
|
||||
- Erstellen eines neuen Projektes in LogicPort
|
||||
- Messkonstanten
|
||||
- Sample Rate: $500$kHz
|
||||
- Sample Period: $2\ \mu$S
|
||||
- Logic-Threshold $2$ V
|
||||
- Somit Bitlänge von $\frac{1}{100\ \text{kHz}} = 10\ \mu\text{s}$
|
||||
- Neue Gruppen erstellen
|
||||
- Umbennen der verwendeten Kabel zur Messung von TxD, RxD
|
||||
- Einstellen des Messpatterns anhand angepasster Flankeneingabe
|
||||
## Einstellungen Runtime Environment
|
||||
### RTC
|
||||
- Auswahl des Projektes mit der Uhr
|
||||
- debug/start drücken
|
||||
- run drücken
|
||||
### Temperatursensor
|
||||
- Siehe Vorgang RTC
|
||||
## Durchführung
|
||||
- In der Messsoftware Messung starten
|
||||
- Korrektes Projekt mit Keil $\mu$Vision für das passende Modul hinzufügen, kompilieren, debug/start, run
|
||||
- **ACHTUNG** bei der Uhr (RTC) nicht kompilieren!
|
||||
- LEDs an den Ports 1 und 5 notieren
|
||||
- Messung auf Richtigkeit (durch dem Ablesen der Werte) überprüfen, und anschließend Abspeichern
|
||||
0
Semester 4/MICONT/Labor 06.md
Executable file
0
Semester 4/MICONT/Labor 06.md
Executable file
175
Semester 4/MICONT/MICONT-Vorlesung.md
Executable file
175
Semester 4/MICONT/MICONT-Vorlesung.md
Executable file
@@ -0,0 +1,175 @@
|
||||
|
||||
C515C Mikrocontroller
|
||||
|
||||
Klausur Ersttermin: 11.7.2024 Gruppe II 12:55 - 17:00
|
||||
# Organisatorisches
|
||||
Labor: Logikanalyse
|
||||
6 Laboreinheiten mit Analyse und Programmierung des 8051 Mikrocontroller
|
||||
- In Aulis Aufgaben zum Vor- & Nacharbeiten
|
||||
- Bei Messaufgaben ist ein Bericht gefordert, bei Programmierungsaufgaben ist dies nicht nötig.
|
||||
- Ein Antreten ist beim 1. Prüfungstermin der Laboraufgaben ist VERPFLICHTEND, ansonsten kämpft man mit dem Prüfungsauschuss
|
||||
Bredi stellt ein LaTeX-Packet zur verfügung für irgendwas... habs nicht mental aufgenommen, dient aber dem Kontext der Labore
|
||||
|
||||
Labortermin wird Donnerstag um eine viertel Stunde verschoben.
|
||||
# Grundlagen der Programmiersprache C
|
||||
Quellcode wird von Bredi hochgeladen.
|
||||
KEINE KLASSEN WUUUUUUUUU
|
||||
STARTUP.A51 --> Assembly Datei für 8051 Microkontroller
|
||||
|
||||
stdint.h definiert verlässliche Bitbreite von Variablen (ein long ist nicht unbedingt 32 Bits)
|
||||
\_t steht für Typ und ist Konvention
|
||||
|
||||
## Einstellungen $\mu$Vision
|
||||
Für die Labore werden C515C-L Microcontroller verwendet, für mu vision ist dies ebenfalls wichtig.
|
||||
Memory Model: Small
|
||||
Code Rom Size: Compact
|
||||
|
||||
### Debug:
|
||||
- Use Keil Monitor-51 Driver wenn ein Microkontroller angeschlossen ist ansonsten use Simulator
|
||||
- Target setup
|
||||
- Einstellen des Portes
|
||||
- Stop Program Execution with Serial Interrupt wird empfohlen
|
||||
- Einstellen des WatchDog-Timers
|
||||
- mitgabe einer Initialization File
|
||||
- WatchdogAus.ini
|
||||
- .\
|
||||
|
||||
### Einzelne Ausgabe der Einzelnen Bits und Bytes
|
||||
- Ansprechen über die Speicherbereiche (Special Function Register)
|
||||
- Mehrere SFR für Ports
|
||||
- Port 5 ist frei verfügbar, 4 ist größtenteils verfügbar, Port 1 abhängig vom Jumper
|
||||
|
||||
```java
|
||||
#include <REG515C.h> // enthält die ganzen Codes zum Ansprechen der Ports etc
|
||||
sfr meinPort = 0x90; // special function register, definition der Adresse des Portes nummer 1
|
||||
sbit meinLsbVonP1 = meinPort^0; // auswahl des signifikanten Bits
|
||||
```
|
||||
|
||||
```c
|
||||
switch (tier) {
|
||||
case hund:
|
||||
demovar = 47;
|
||||
case katze:
|
||||
demovar =+ 2;
|
||||
break;
|
||||
}
|
||||
```
|
||||
Der gegebene Code läuft wenn tier == hund ist durch den Case *hund* und danach durch den Case *katze*, weil nicht *gebreaked* wird.
|
||||
|
||||
Zitate usw. beispielsweise: [Brede, 24]
|
||||
|
||||
_____
|
||||
|
||||
### Kontrollstrukturen
|
||||
Setzen von Bits anhand von Masken (meistens ein Byte, der &, | genommen wird um den gewünschten Bit zu invertieren).
|
||||
|
||||
```C
|
||||
|
||||
/*
|
||||
& and
|
||||
| or
|
||||
^ xor
|
||||
~ complement
|
||||
>> right shifting
|
||||
<< left shifting
|
||||
*/
|
||||
```
|
||||
|
||||
Bedenke an Port 5 des Mikrocontrollers gilt negative Logik, daher ~-Operator verwenden.
|
||||
|
||||
### Ein und Ausgabe für Zwecke der Laborausgaben
|
||||
Ausschnitt aus eingabeAusgabeDemo.c
|
||||
```C
|
||||
#include <serIO.h>
|
||||
serInit();
|
||||
uchar taste = serWaitIn(); //Warten auf Eingabe
|
||||
taste = serIn(); //Direkte Eingabe
|
||||
serCharOut(taste);
|
||||
|
||||
```
|
||||
|
||||
Ausschnitt aus komplexeDatentypenDemo.c
|
||||
```C
|
||||
int *intptr;
|
||||
int cream[10];
|
||||
|
||||
inptr = cream //bekommt die adresse vom nullten Index von cream
|
||||
*intptr++ = 37 // setzt cream[0] = 37 und erhöht dann den Zeiger um die Bitzahl eines Integers
|
||||
```
|
||||
|
||||
Es gibt 3 Addressspeicher für den Mikrocontroller, in den Speicherraum code, kann eingeschrieben werden, danach aber nicht modifiziert werden.
|
||||
```C
|
||||
char code myString[] = "Hallo Welt.";
|
||||
```
|
||||
|
||||
## Grundlegende Hardwarestruktur eines Rechners
|
||||
Wie wird eine konstante geladen?
|
||||
Wie wird eine konstante aus einem Register in den Speicher geladen?
|
||||
|
||||
## Hardwarestruktur des 8051 Mikrocontrollers
|
||||
Kurze Wiederholung vom Speicher-Layout.
|
||||
Registerbank (RB0 - RB3) kann durchaus sinnvoll für den 32 Bit-Addierer sein. Oder es wird eine Registerbank und alle 8 Register verwendet.
|
||||
|
||||
code, data und xdata
|
||||
|
||||
### Erstellen eines Projektes für Assembler
|
||||
1. New Projekt
|
||||
1. C515C-L
|
||||
2. Do not copy STARTUP.A51
|
||||
2. .s Datei erstellen (wird von alleine zu einer .a51)
|
||||
3. Options
|
||||
1. A51
|
||||
1. Define 8051 SFR Names checked (oder nicht abhängig von der Config)
|
||||
2. Target
|
||||
1. Operating System: Compact
|
||||
```c
|
||||
#include <REF515C.H>
|
||||
|
||||
org 0 //start bei Adresse 0
|
||||
jmp 0 // springe zu Adresse 0
|
||||
end
|
||||
```
|
||||
|
||||
## Hardware-Operationen und -Kontrollstrukturen der 8051 Mikrocontroller
|
||||
```c
|
||||
setb c //ansprechen des ein bit-registers
|
||||
clr c //clear
|
||||
; //Kommentar
|
||||
mov dptr,#02000h //initialisierung des Datapointers bei externer Adresse 02000h
|
||||
movx @dptr,a // Einschreiben des Akkumulatorwertes in die externe Adresse 02000h
|
||||
//---- Logische Befehle ----
|
||||
anl
|
||||
orl
|
||||
xrl
|
||||
setb 4 // setzt den 4. Bit auf 1
|
||||
cpl //
|
||||
//----Grundlegende Sprungbefehle----
|
||||
jmp sprungziel
|
||||
sprungziel:
|
||||
jz //sprung nur bei Akkumulator bei Null
|
||||
jnz //jump not zero
|
||||
jc //jump carry (carry ist eins)
|
||||
jnc // jump not carry
|
||||
|
||||
dnjz //decrementiert und spring wenn nicht null
|
||||
cjne //vergleich und sprung und kann ein Carry-Flag setzen
|
||||
|
||||
PSW //Program Status Word
|
||||
|
||||
rr
|
||||
rrc
|
||||
|
||||
da //Überlaufkorrektur
|
||||
|
||||
swap //
|
||||
mov
|
||||
movc //
|
||||
|
||||
jb p1.0,$ // warten auf fallende Flanke
|
||||
jnb p1.0,$ // warten auf steigende Flanke
|
||||
|
||||
|
||||
codebase equ 0 //setzen eines variabelnamen für bestimmten Wert
|
||||
|
||||
```
|
||||
|
||||
BIN
Semester 4/MICONT/MICONT_L06.pdf
Executable file
BIN
Semester 4/MICONT/MICONT_L06.pdf
Executable file
Binary file not shown.
0
Semester 4/MICONT/Untitled.md
Executable file
0
Semester 4/MICONT/Untitled.md
Executable file
Reference in New Issue
Block a user