Lab notes for labs 1 and 2.
This commit is contained in:
parent
2ce6ab637a
commit
0ca6500227
|
@ -0,0 +1,6 @@
|
|||
\relax
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Lab 1}{1}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Lab 2}{1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Student Number}{1}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Program 1}{2}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Program 2}{2}}
|
|
@ -0,0 +1,124 @@
|
|||
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6350 64-bit) (preloaded format=pdflatex 2018.1.7) 16 JAN 2018 17:01
|
||||
entering extended mode
|
||||
**"./Lab 1 and 2.tex"
|
||||
("Lab 1 and 2.tex"
|
||||
LaTeX2e <2017-04-15>
|
||||
Babel <3.10> and hyphenation patterns for 75 language(s) loaded.
|
||||
("C:\Program Files\MiKTeX 2.9\tex\latex\base\article.cls"
|
||||
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
|
||||
("C:\Program Files\MiKTeX 2.9\tex\latex\base\size11.clo"
|
||||
File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count79
|
||||
\c@section=\count80
|
||||
\c@subsection=\count81
|
||||
\c@subsubsection=\count82
|
||||
\c@paragraph=\count83
|
||||
\c@subparagraph=\count84
|
||||
\c@figure=\count85
|
||||
\c@table=\count86
|
||||
\abovecaptionskip=\skip41
|
||||
\belowcaptionskip=\skip42
|
||||
\bibindent=\dimen102
|
||||
)
|
||||
(C:\Users\Anthony\AppData\Roaming\MiKTeX\2.9\tex\latex\listings\listings.sty
|
||||
("C:\Program Files\MiKTeX 2.9\tex\latex\graphics\keyval.sty"
|
||||
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks14
|
||||
)
|
||||
\lst@mode=\count87
|
||||
\lst@gtempboxa=\box26
|
||||
\lst@token=\toks15
|
||||
\lst@length=\count88
|
||||
\lst@currlwidth=\dimen103
|
||||
\lst@column=\count89
|
||||
\lst@pos=\count90
|
||||
\lst@lostspace=\dimen104
|
||||
\lst@width=\dimen105
|
||||
\lst@newlines=\count91
|
||||
\lst@lineno=\count92
|
||||
\lst@maxwidth=\dimen106
|
||||
|
||||
(C:\Users\Anthony\AppData\Roaming\MiKTeX\2.9\tex\latex\listings\lstmisc.sty
|
||||
File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz)
|
||||
\c@lstnumber=\count93
|
||||
\lst@skipnumbers=\count94
|
||||
\lst@framebox=\box27
|
||||
)
|
||||
(C:\Users\Anthony\AppData\Roaming\MiKTeX\2.9\tex\latex\listings\listings.cfg
|
||||
File: listings.cfg 2015/06/04 1.6 listings configuration
|
||||
))
|
||||
Package: listings 2015/06/04 1.6 (Carsten Heinz)
|
||||
|
||||
("C:\Program Files\MiKTeX 2.9\tex\latex\base\alltt.sty"
|
||||
Package: alltt 1997/06/16 v2.0g defines alltt environment
|
||||
)
|
||||
(C:\Users\Anthony\AppData\Roaming\MiKTeX\2.9\tex\latex\preprint\fullpage.sty
|
||||
Package: fullpage 1999/02/23 1.1 (PWD)
|
||||
\FP@margin=\skip43
|
||||
)
|
||||
("Lab 1 and 2.aux")
|
||||
\openout1 = `"Lab 1 and 2.aux"'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 9.
|
||||
LaTeX Font Info: ... okay on input line 9.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 9.
|
||||
LaTeX Font Info: ... okay on input line 9.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 9.
|
||||
LaTeX Font Info: ... okay on input line 9.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 9.
|
||||
LaTeX Font Info: ... okay on input line 9.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 9.
|
||||
LaTeX Font Info: ... okay on input line 9.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 9.
|
||||
LaTeX Font Info: ... okay on input line 9.
|
||||
\c@lstlisting=\count95
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <12> on input line 10.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <8> on input line 10.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <6> on input line 10.
|
||||
LaTeX Font Info: Try loading font information for OMS+cmr on input line 17.
|
||||
("C:\Program Files\MiKTeX 2.9\tex\latex\base\omscmr.fd"
|
||||
File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
|
||||
)
|
||||
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10.95> not available
|
||||
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 17.
|
||||
|
||||
[1
|
||||
|
||||
{C:/ProgramData/MiKTeX/2.9/pdftex/config/pdftex.map}]
|
||||
Overfull \hbox (53.37556pt too wide) in paragraph at lines 64--64
|
||||
[] \OT1/cmtt/m/n/10.95 xor.b #0x41, R8 ; #00000001b -> #0100
|
||||
0000b -> ... (LED0 -> LED1 -> ...)[]
|
||||
[]
|
||||
|
||||
|
||||
Overfull \hbox (53.37556pt too wide) in paragraph at lines 66--66
|
||||
[] \OT1/cmtt/m/n/10.95 mov.w #40000, R10 ; counts to decrement
|
||||
(2nd dec, since max val is 65536)[]
|
||||
[]
|
||||
|
||||
[2] [3] ("Lab 1 and 2.aux") )
|
||||
Here is how much of TeX's memory you used:
|
||||
1498 strings out of 493323
|
||||
21395 string characters out of 3139061
|
||||
80399 words of memory out of 3000000
|
||||
5084 multiletter control sequences out of 15000+200000
|
||||
8620 words of font info for 31 fonts, out of 3000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
26i,6n,32p,384b,251s stack positions out of 5000i,500n,10000p,200000b,50000s
|
||||
<C:/Program Files/MiKTeX 2.9/fonts/type1/public/am
|
||||
sfonts/cm/cmbx10.pfb><C:/Program Files/MiKTeX 2.9/fonts/type1/public/amsfonts/c
|
||||
m/cmbx12.pfb><C:/Program Files/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmr10.
|
||||
pfb><C:/Program Files/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmr12.pfb><C:/P
|
||||
rogram Files/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmr17.pfb><C:/Program Fi
|
||||
les/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmsy10.pfb><C:/Program Files/MiKT
|
||||
eX 2.9/fonts/type1/public/amsfonts/cm/cmtt10.pfb>
|
||||
Output written on "Lab 1 and 2.pdf" (3 pages, 96901 bytes).
|
||||
PDF statistics:
|
||||
40 PDF objects out of 1000 (max. 8388607)
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,120 @@
|
|||
\documentclass[11pt]{article}
|
||||
\author{Jonathan Chan (15354146)}
|
||||
\title{PHYS 319\\Labs 1 and 2 Notes}
|
||||
|
||||
\usepackage{listings}
|
||||
\usepackage{alltt}
|
||||
\usepackage{fullpage}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\section{Lab 1}
|
||||
|
||||
\section{Lab 2}
|
||||
Some minor reminders:
|
||||
\begin{itemize}
|
||||
\item Remember to connect +5V and ground to 4-digit 7-segment display, and ground (\textbf{not} VCC) to microprocessor
|
||||
\item \texttt{mspdebug} needs to be exited (with CTRL-D) for the program to run
|
||||
\end{itemize}
|
||||
\subsection{Student Number}
|
||||
There needs to be a move to \texttt{P1OUT} for setting each digit. Since the strobe also needs to go from low to high to actually set the digit, there are actually two moves for each digit. Below is the full program for setting the display to \texttt{4146}.
|
||||
\begin{alltt}
|
||||
.include "msp430g2553.inc"
|
||||
|
||||
org 0xc000
|
||||
START:
|
||||
; setup
|
||||
mov #0x0400, SP
|
||||
mov.w #WDTPW|WDTHOLD, \&WDTCTL
|
||||
mov.b #11110111b, \&P1DIR
|
||||
|
||||
; set digits
|
||||
mov.b #01100000b, \&P1OUT ; xxx6
|
||||
mov.b #01100001b, \&P1OUT ; xxx6
|
||||
|
||||
mov.b #01000010b, \&P1OUT ; xx46
|
||||
mov.b #01000011b, \&P1OUT ; xx46
|
||||
|
||||
mov.b #00010100b, \&P1OUT ; x146
|
||||
mov.b #00010101b, \&P1OUT ; x146
|
||||
|
||||
mov.b #01000110b, \&P1OUT ; 4146
|
||||
mov.b #01000111b, \&P1OUT ; 4146
|
||||
|
||||
; disable
|
||||
bis.w #CPUOFF, SR
|
||||
|
||||
org 0xfffe
|
||||
dw START
|
||||
\end{alltt}
|
||||
|
||||
\subsection{Program 1}
|
||||
Below is the full program annotated with comments. Making the lights blink twice as fast is simply halving the initial value set in R9, but making them blink twice as slow involves decrementing another register, since the doubled value is 80000 and will not fit in a two-byte word whose maximum value is 65536.
|
||||
\begin{alltt}
|
||||
.include "msp430g2553.inc"
|
||||
|
||||
org 0xC000
|
||||
START:
|
||||
mov.w #WDTPW|WDTHOLD, \&WDTCTL
|
||||
mov.b #0x41, \&P1DIR ; #01000001b (P1.6 == LED2, P1.0 == LED1)
|
||||
mov.w #0x01, R8 ; #00000001b (start on LED1)
|
||||
REPEAT:
|
||||
mov.b R8, \&P1OUT
|
||||
xor.b #0x41, R8 ; #00000001b -> #01000000b -> ... (LED0 -> LED1 -> ...)
|
||||
mov.w #40000, R9 ; counts to decrement before blink
|
||||
mov.w #40000, R10 ; counts to decrement (2nd dec, since max val is 65536)
|
||||
WAITER1:
|
||||
dec R9
|
||||
jnz WAITER1 ; R9 not yet 0
|
||||
WAITER2:
|
||||
dec R10
|
||||
jnz waiter2 ; R10 not yet 0
|
||||
jmp repeat ; R9, R10 == 0; blink other LED
|
||||
|
||||
org 0xfffe
|
||||
dw START ; set reset vector to 'init' label
|
||||
\end{alltt}
|
||||
|
||||
\subsection{Program 2}
|
||||
To make the LEDs cycle in the order
|
||||
\\ \indent \texttt{none -> red -> green -> both -> none},\\
|
||||
the output to P1OUT needs to be
|
||||
\\ \indent \texttt{0000 0000 -> 0000 0001 -> 0100 0000 -> 0100 0001 -> 0000 0000}.\\
|
||||
Notice that
|
||||
\\ \indent \texttt{0000 0000 -> 0000 0001} \indent and \indent \texttt{0100 0000 -> 0100 0001}\\
|
||||
can be done with an \texttt{xor} on \texttt{0000 0001}, and
|
||||
\\ \indent \texttt{0000 0001 -> 0100 0000} \indent and \indent \texttt{0100 0001 -> 0000 0000}\\
|
||||
can be done with an \texttt{xor} on \texttt{0100 0001}. Rather than using two registers to save the two different values to \texttt{xor} on, notice that in turn
|
||||
\\ \indent \texttt{0000 0001 -> 0100 0001 -> 0000 0001}\\
|
||||
can be done with an \texttt{xor} on \texttt{0100 0000}. Then we initialize a register (\texttt{R8} here) to \texttt{0000 0001}, and after we have \texttt{xor}ed it with the output, we \texttt{xor 0100 0000} on \texttt{R8} to get the next value that should be \texttt{xor}ed with the output. Below is the full program annotated with comments.
|
||||
|
||||
\begin{alltt}
|
||||
#include "msp430g2553.inc"
|
||||
|
||||
org 0x0C000
|
||||
RESET:
|
||||
mov.w #0x400, SP
|
||||
mov.w #WDTPW|WDTHOLD, \&WDTCTL
|
||||
mov.b #11110111b, \&P1DIR ; all pins outputs except P1.3
|
||||
mov.b #00001000b, \&P1REN ; enable resistor for P1.3
|
||||
mov.b #00001000b, \&P1IE ; P1.3 set as an interrupt
|
||||
mov.w #0x0049, R7 ; R7 = 0000 0000 0100 1001
|
||||
mov.b R7, \&P1OUT ; LED1, LED2 on
|
||||
mov.b #0x0041, R8 ; value to xor with R7
|
||||
EINT ; enable interrupts
|
||||
bis.w #CPUOFF, SR
|
||||
PUSH:
|
||||
xor.w R8, R7 ; next LED state
|
||||
xor.w #0x0040, R8 ; 0x0041 -> 0x0001 -> 0x0041
|
||||
mov.b R7, \&P1OUT ; set LEDs to new state
|
||||
bic.b #00001000b, \&P1IFG ; interrupt flag P1.3 set to 0
|
||||
reti ; return from interrupt
|
||||
|
||||
org 0xffe4
|
||||
dw PUSH ; interrupt from button goes here
|
||||
|
||||
org 0xfffe
|
||||
dw RESET ; interrupt from reset button goes here
|
||||
\end{alltt}
|
||||
\end{document}
|
Loading…
Reference in New Issue