summaryrefslogtreecommitdiff
path: root/demo/demo1.asm
blob: 0587166c4b09bd91b06bb4cf2f8010ad52f404a9 (plain)
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
; MCU 8051 IDE - Demonstration code
; Macro instructions, conditional compilation and constants
; Try tab "Graph" on bottom panel

; Press F2 and F6 to run the program (start simulator and animate)

$TITLE('DEMO 2')	; Set title for code listing
$DATE(11/29/1182)	; Set date for code listing (the 29th of November 1182, welcome back to the Medieval Era)

; Constant definitions
; --------------------
counter		idata	00Fh	; Counter of Px shifts
x		set	100	; Some variable
inc_dec		equ	100 / X	; Flag: Increment/Decrement counter

		cseg at	1FFh	; Code segment starts at 0x1FF
something:	db	4d	; Reserve 4 bytes in this segment

; Macro instructions
; --------------------

;; Shift the given registers
shift	macro	reg0, reg1

	; Increment / Decrement counter
	mov	A, counter
	if	inc_dec <> 0
		inc	A
	else
		dec	A
	endif
	$nolist			; <- Disable code listing
	mov	counter, A
	$list			; <- Enable code listing

	; Shift
	mov	reg1, reg0
	mov	reg0, reg1
	setb	C
	mov	A, reg0
	rl	A
	mov	reg0, A
endm

; Program initialization
; --------------------
	org	0h
	sjmp	start

; Program start
; --------------------
start:	mov	P1, #00Fh
	mov	P3, #01Eh
	sjmp	main

; Main loop
; --------------------
main:	shift	P1, P3
	sjmp	main

; Program end
; --------------------
	end