?? sy14.lst
字號:
* M16C FAMILY ASSEMBLER * SOURCE LIST Fri Mar 25 10:02:43 2005 PAGE 001
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
1 ;****************************************************************
2 ;* *
3 ;* SAMPLE PROGRAM : 1 SEC COUNTER *
4 ;* FILE NAME : SAMP1a.A30 *
5 ;* FUNCTION : SW1 => COUNTER START *
6 ;* SW2 => COUNTER STOP *
7 ;* SW3 => COUNTER CLEAR(START ONLEY) *
8 ;* *
9 ;****************************************************************
10 ;
11 ; Copyright,1999
12 ; MITSUBISHI ERECTRIC CORPORATION AND
13 ; MITSUBISHI ERECTRIC SEMICONDUCTOR SOFTWARE CORPORATIOON
14 ;
15 ;---------- INCLUDE OF SFR FILE ----------
16 ;
17 .list off ; don't draw up a prpgram list
18 .list on ; draw up a program list
19 ;
20 ;---------- DEFINE OF SYMBOLS ----------
21 ;
22 00000400h VramTOP .equ 000400H ; top address of internal RAM
23 00002BFFh VramEND .equ 002BFFH ; end address of internal RAM
24 00002C00h VIstack .equ 002C00H ; stack pointer
25 000F0000h VprogTOP .equ 0F0000H ; top address of program area
26 000FA000h Vintbase .equ 0FA000H ; top address of variable vector table
27 000FFFDCh Vvector .equ 0FFFDCH ; top address of fixed vector table
28 00000380h SB_base .equ 000380H ; base address of SB recative
29 ;myport .equ 0003F0H
30 ;
31 ;---------- KEEP OF RAM AREA ----------
32 ;
33 .section memory,data
34 00400 .org VramTOP
35 ;
36 00400(000002H) LED: .blkb 2 ; LED display data
37 00402(000001H) Tsec: .blkb 1 ; sec buffer
38 00403(000001H) Fdig: .blkb 1
39 00404(000001H) sw_in: .blkb 1 ; start-stop buffer
40 00405(000001H) cnt_clr: .blkb 1 ; count clear buffer
41 00406(000001H) myflag: .blkb 1 ;flag the function of sw1
42 00407(000002H) mycount: .blkb 2 ;flag 2 sec
43 ;
44 .section prog,code
45 F0000 .org VprogTOP
46 .sb SB_base ; assings aprovisional SB register value
47 .sbsym LED ; place data in SB addressing mode
48 .sbsym Tsec ; place data in SB addressing mode
49 .sbsym Fdig ; place data in SB addressing mode
50 .sbsym myflag ; place data in SB addressing mode
51 .sbsym mycount
52 ;
53 ;---------- CLEAR OF RAM ----------
54 ;
55 F0000 reset:
56 F0000 EB40002C ldc #VIstack,ISP ; set Interrupt Stack Pointer
57 F0004 EB608003 ldc #SB_base,SB ; set SB register
58 ; ldintb #Vintbase ; set Interrupt TaBle register
59 ;
60 F0008 D900 Q mov.w #0,r0 ; 0 clear
61 F000A 75C30014 mov.w #(VramEND+1-VramTOP)/2,r3 ; number of times
62 F000E AA0004 S mov.w #VramTOP,a1 ; start address
* M16C FAMILY ASSEMBLER * SOURCE LIST Fri Mar 25 10:02:43 2005 PAGE 002
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
63 F0011 7DEA sstr.w
64 ;
65 ;---------- INITIALLIZE ----------
66 ;
67 F0013 EB200F00 LDINTB #USER_vector_table
EB1000A0
68 ;
69
70 ; mov.w #00000000H,pd8
71 ; mov.w #00000001H,pur2
72 F001B D9FA62 Q* mov.w #0FFFFH,pd0 ; P0,P1 output set
73 ;
74 F001E C7064E00 S mov.b #00000110B,adic ; A-D Interrupt control reg set
75
76 F0022 C7065D00 S mov.b #00000110B,int0ic ; INT0 Interrupt control reg set
77
78 F0026 C7065E00 S mov.b #00000110B,int1ic ; INT1 Interrupt control reg set
79
80 F002A B75500 Z mov.b #00000000B,ta0ic ; TIMER A0 Interrupt control reg set
81 F002D C58016 S* mov.b #80H,ta0mr ; f1*32 = 2 usec
82 F0030 75CA06E803 * mov.w #1000,ta0 ; make 2 msec
83 F0035 4800 S* bset ta0s ; TIMER A0 start
84 F0037 EB64 fset i
85
86 ;---------- A-D CONVERTER ----------
87 F0039 C50154 S* mov.b #01H,adcon2 ; A-D register 2
88 F003C C5A056 S* mov.b #0A0H,adcon0 ; A-D register 0
89 F003F C52057 S* mov.b #20H,adcon1 ; A-D register 1
90 F0042 4E56 S* bset adst ; A-D conversion start
91 ;
92 ;---------- MAIN PROGRAM ----------
93 ;
94 F0044 main:
95 F0044 75C03200 mov.w #50,r0 ; 50 => r0
96 F0048 check:
97 F0048 7E0FAB02 btstc 3,ta0ic ; 2 msec?
98
99 F004C 6CFB jnc check ; return
100 F004E F57100 W jsr display ; subroutine display
101 F0051 F9F0F5 sbjnz.w #1,r0,check ; 1sec?
102 F0054 F54D00 W jsr mytimer ;count for 2sec
103 F0057 F52A00 W jsr timer ; subroutine timer
104 F005A FEE9 B jmp main
105
106 F005C delay:
107 F005C 75C13200 mov.w #50,r1
108 F0060 F9F1FE loop: sbjnz.w #1,r1,loop
109 F0063 F3 rts
110 ;
111 ;---------- SWITCH CHECK ----------
112 ;
113 F0064 sw_int1:
114 ;========== start ==========
115 F0064 EB64 fset i
116 F0066 F5F5FF W jsr delay
117 F0069 5B70 S* btst 3,p8
118 ; jc sw1
119 F006B E50184 S* cmp.b #1,sw_in ; sw1 mean stop?
120 F006E 6E06 jnz mystop
121
122 F0070 B584 Z* mov.b #0,sw_in
123 F0072 B585 Z* mov.b #0,cnt_clr ; sw_in flag clear
* M16C FAMILY ASSEMBLER * SOURCE LIST Fri Mar 25 10:02:43 2005 PAGE 003
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
124 ;mov.b #1,myflag
125 F0074 64 S jmp sw1
126
127 F0075 C50184 S* mystop: mov.b #1,sw_in ; sw_in flag 1 set(start)
128 F0078 B585 Z* mov.b #0,cnt_clr ; sw_in flag clear
129 ;mov.b #0,myflag
130
131 F007A FB sw1: reit
132
133 F007B sw_int0:
134 ;========== stop ==========
135 ;fset i
136 ;mov.b #0,sw_in ; sw_in flag clear(stop)
137 F007B FB reit
138
139 F007C sw_adtrg:
140 ;========== clear ==========
141 F007C EB64 fset i
142 F007E C50185 S* mov.b #1,cnt_clr ; timer count flag on
143 F0081 FB reit
144 ;
145 ;---------- TIMER COUNT ----------
146 ;
147 F0082 timer:
148 F0082 82 S push.b r0l
149 F0083 E50184 S* cmp.b #1,sw_in ; sw_in - 1(start?)
150 F0086 6E08 jnz timer_end1 ; jump not ZERO
151 F0088 0982 S* mov.b Tsec,r0l ; Tsec => r0l
152 F008A 7CEC01 dadd.b #1,r0l ; 1sec count up
153 F008D 0182 S* mov.b r0l,Tsec ; r0l => Tsec
154
155 F008F timer_end1:
156 F008F E50185 S* cmp.b #1,cnt_clr
157 F0092 CD0082 * stz #00,Tsec
158 F0095 CD0084 * stz #0,sw_in ; sw_in flag clear(stop)
159 F0098 0982 S* mov.b Tsec,r0l ; Tsec => r0l
160 F009A 7C8A80 * movll r0l,LED ; r0l => LED(low => low)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -