diff options
author | Matt Strapp <msattr@gmail.com> | 2020-02-05 10:37:54 -0600 |
---|---|---|
committer | Matt Strapp <msattr@gmail.com> | 2020-02-05 10:37:54 -0600 |
commit | 15a357a03e996cad5f7499e73d7ac52069804576 (patch) | |
tree | 24e2c557ed4956755c4c9dcf591f4be8509a7a2d | |
parent | E (diff) | |
download | ee2361-15a357a03e996cad5f7499e73d7ac52069804576.tar ee2361-15a357a03e996cad5f7499e73d7ac52069804576.tar.gz ee2361-15a357a03e996cad5f7499e73d7ac52069804576.tar.bz2 ee2361-15a357a03e996cad5f7499e73d7ac52069804576.tar.lz ee2361-15a357a03e996cad5f7499e73d7ac52069804576.tar.xz ee2361-15a357a03e996cad5f7499e73d7ac52069804576.tar.zst ee2361-15a357a03e996cad5f7499e73d7ac52069804576.zip |
Do lab 2A
Diffstat (limited to '')
-rw-r--r-- | Lab 2.X/Lab2A.s | 142 |
1 files changed, 68 insertions, 74 deletions
diff --git a/Lab 2.X/Lab2A.s b/Lab 2.X/Lab2A.s index 4f7e189..fc9f30c 100644 --- a/Lab 2.X/Lab2A.s +++ b/Lab 2.X/Lab2A.s @@ -1,74 +1,68 @@ - -.include "xc.inc" ; required "boiler-plate" (BP) - -;the next two lines set up the actual chip for operation - required -config __CONFIG2, POSCMOD_EC & I2C1SEL_SEC & IOL1WAY_OFF & OSCIOFNC_ON & FCKSM_CSECME & FNOSC_FRCPLL & SOSCSEL_LPSOSC & WUTSEL_FST & IESO_OFF -config __CONFIG1, WDTPS_PS1 & FWPSA_PR32 & WINDIS_OFF & FWDTEN_OFF & BKBUG_ON & GWRP_ON & GCP_ON & JTAGEN_OFF - - .bss ; put the following labels in RAM -counter: - .space 2 ; a variable that takes two bytes (we won?t use - ; it for now, but put here to make this a generic - ; template to be used later). -stack: - .space 32 ; this will be our stack area, needed for func calls - -.text ; BP (put the following data in ROM(program memory)) - -;because we are using the C compiler to assemble our code, we need a "_main" label -;somewhere. (There's a link step that looks for it.) -.global _main ;BP -;your functions go here - -_main: - - bclr CLKDIV,#8 ;BP - nop - ;; --- Begin your main program below here --- - - - mov #0x9fff,w0 - mov w0,AD1PCFG ; Set all pins to digital mode - mov #0b1111111111111110,w0 - mov w0,TRISA ; set pin RA0 to output - mov #0x0001,w0 - mov w0,LATA ; set pin RA0 high - call foreverLoop - -wait_24cycles: - ; 2 cycles for function call - repeat #17 ; 1 cycle to load and prep - nop ; 17+1 cycles to execute NOP 18 times - return ; 3 cycles for the return - -wait_32cycles: ; 2 - repeat #24 ; 1 - nop ; 25+1 cycles = 26 - return ; 3 - -delay_100us: - repeat #1593 - nop - return - -delay_1ms: - repeat #15993 - nop - return - -foreverLoop: - - call wait_24cycles ; 24 cycles - clr LATA ; set pin RA0 low = 1 cycle - call wait_32cycles ; 32 cycles - inc LATA ; set pin RA0 high = 1 cycle - bra foreverLoop - -; nop -; nop -; clr LATA -; repeat #4 -; nop -; inc LATA -; bra foreverLoop -.end +
+.include "xc.inc" ; required "boiler-plate" (BP)
+
+;the next two lines set up the actual chip for operation - required
+config __CONFIG2, POSCMOD_EC & I2C1SEL_SEC & IOL1WAY_OFF & OSCIOFNC_ON & FCKSM_CSECME & FNOSC_FRCPLL & SOSCSEL_LPSOSC & WUTSEL_FST & IESO_OFF
+config __CONFIG1, WDTPS_PS1 & FWPSA_PR32 & WINDIS_OFF & FWDTEN_OFF & BKBUG_ON & GWRP_ON & GCP_ON & JTAGEN_OFF
+
+ .bss ; put the following labels in RAM
+counter:
+ .space 2 ; a variable that takes two bytes (we won?t use
+ ; it for now, but put here to make this a generic
+ ; template to be used later).
+stack:
+ .space 32 ; this will be our stack area, needed for func calls
+
+.text ; BP (put the following data in ROM(program memory))
+
+;because we are using the C compiler to assemble our code, we need a "_main" label
+;somewhere. (There's a link step that looks for it.)
+.global _main ;BP
+;your functions go here
+
+_main:
+
+ bclr CLKDIV,#8 ;BP
+ nop
+ ;; --- Begin your main program below here ---
+
+
+ mov #0x9fff,w0
+ mov w0,AD1PCFG ; Set all pins to digital mode
+ mov #0b1111111111111110,w0
+ mov w0,TRISA ; set pin RA0 to output
+ mov #0x0001,w0
+ mov w0,LATA ; set pin RA0 high
+ call foreverLoop
+
+wait_24cycles:
+ ; 2 cycles for function call
+ repeat #17 ; 1 cycle to load and prep
+ nop ; 17+1 cycles to execute NOP 18 times
+ return ; 3 cycles for the return
+
+wait_32cycles: ; 2
+ repeat #24 ; 1
+ nop ; 25+1 cycles = 26
+ return ; 3
+
+delay_100us:
+ repeat #1593
+ nop
+ return
+
+delay_1ms:
+ repeat #15993
+ nop
+ return
+
+foreverLoop:
+
+ call wait_24cycles ; 24 cycles
+ clr LATA ; set pin RA0 low = 1 cycle
+ call wait_32cycles ; 32 cycles
+ inc LATA ; set pin RA0 high = 1 cycle
+ bra foreverLoop
+
+
+.end
|