blob: c718500f89c6ed8bf9ddcc2af7b9d22d8ae43182 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
.equ __P24FJ64GA002,1 ;required "boiler-plate" (BP)
.include "p24Fxxxx.inc" ;BP
#include "xc.inc" ;BP
; DO NOT include config statements. We define them in the C file
;the next two lines set up the actual chip for operation - required
;config __CONFIG2, POSCMOD_NONE & I2C1SEL_PRI & IOL1WAY_OFF & OSCIOFNC_ON & FCKSM_CSECME & FNOSC_FRCPLL & SOSCSEL_LPSOSC & WUTSEL_FST & IESO_OFF
;config __CONFIG1, FWDTEN_OFF & COE_OFF & BKBUG_OFF & GWRP_OFF & GCP_OFF & JTAGEN_OFF
.bss ;put the following labels in RAM
_counter: .space 2 ;declare a 16-bit variable
; you SHOULD NOT define stack, becasue this file is compiled
; alongside a C file that contains main(). The C compiler
; will create stack space for us.
;stack:
; .space 32 ;this will be our stack area, from var_16_bit to here
.text ;BP (put the following data in ROM(program memory))
.global _myAsmFunc
.global _myGlobalVar
.global _counter
_myAsmFunc:
push w0
inc _myGlobalVar
inc _counter
bra checkLoopEndCond
loopBody:
btg LATB, #2 ; btg stands for bit-toggle.
nop
dec WREG0
checkLoopEndCond:
cp0 w0
bra nz, loopBody
pop w0
return
.end
|