📄 sy13.lst
字号:
* M16C FAMILY ASSEMBLER * SOURCE LIST Tue Mar 29 14:22:24 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 or stop *
6 ;* *
7 ;* SW3 => COUNTER CLEAR *
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 ;
30 ;---------- KEEP OF RAM AREA ----------
31 ;
32 .section memory,data
33 00400 .org VramTOP
34 ;
35 00400(000002H) LED: .blkb 2 ; LED display data
36 00402(000001H) Tsec: .blkb 1 ; sec buffer
37 00403(000001H) Fdig: .blkb 1
38 00404(000001H) sw_in: .blkb 1 ; start-stop buffer
39 00405(000001H) cnt_clr: .blkb 1 ; count clear buffer
40 ;
41 .section prog,code
42 F0000 .org VprogTOP
43 .sb SB_base ; assings aprovisional SB register value
44 .sbsym LED ; place data in SB addressing mode
45 .sbsym Tsec ; place data in SB addressing mode
46 .sbsym Fdig ; place data in SB addressing mode
47 ;
48 ;---------- CLEAR OF RAM ----------
49 ;
50 F0000 reset:
51 F0000 EB40002C ldc #VIstack,ISP ; set Interrupt Stack Pointer
52 F0004 EB608003 ldc #SB_base,SB ; set SB register
53 ; ldintb #Vintbase ; set Interrupt TaBle register
54 ;
55 F0008 D900 Q mov.w #0,r0 ; 0 clear
56 F000A 75C30014 mov.w #(VramEND+1-VramTOP)/2,r3 ; number of times
57 F000E AA0004 S mov.w #VramTOP,a1 ; start address
58 F0011 7DEA sstr.w
59 ;
60 ;---------- INITIALLIZE ----------
61 ;
62 F0013 EB200F00 LDINTB #USER_vector_table
* M16C FAMILY ASSEMBLER * SOURCE LIST Tue Mar 29 14:22:24 2005 PAGE 002
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
EB1000A0
63
64 F001B D9FA62 Q* mov.w #0FFFFH,pd0 ; P0,P1 output set
65 ;
66 F001E C7064E00 S mov.b #00000110B,adic ; A-D Interrupt control reg set
67
68 F0022 C7065D00 S mov.b #00000110B,int0ic ; INT0 Interrupt control reg set
69
70 F0026 C7065E00 S mov.b #00000110B,int1ic ; INT1 Interrupt control reg set
71
72 F002A B75500 Z mov.b #00000000B,ta0ic ; TIMER A0 Interrupt control reg set
73 F002D C58016 S* mov.b #80H,ta0mr ; f1*32 = 2 usec
74 F0030 75CA06E803 * mov.w #1000,ta0 ; make 2 msec
75 F0035 4800 S* bset ta0s ; TIMER A0 start
76 F0037 EB64 fset i
77
78 ;---------- A-D CONVERTER ----------
79 F0039 C50154 S* mov.b #01H,adcon2 ; A-D register 2
80 F003C C5A056 S* mov.b #0A0H,adcon0 ; A-D register 0
81 F003F C52057 S* mov.b #20H,adcon1 ; A-D register 1
82 F0042 4E56 S* bset adst ; A-D conversion start
83 ;
84 ;---------- MAIN PROGRAM ----------
85 ;
86 F0044 main:
87 F0044 75C03200 mov.w #50,r0 ; 50 => r0
88 F0048 check:
89 F0048 7E0FAB02 btstc 3,ta0ic ; 2 msec?
90
91 F004C 6CFB jnc check ; return
92 F004E F55D00 W jsr display ; subroutine display
93 F0051 F9F0F5 sbjnz.w #1,r0,check ; 0.1sec?
94 F0054 F52600 W jsr timer ; subroutine timer
95 F0057 FEEC B jmp main
96
97 F0059 delay:
98 F0059 75C13200 mov.w #50,r1
99 F005D F9F1FE loop: sbjnz.w #1,r1,loop
100 F0060 F3 rts
101 ;
102 ;---------- SWITCH CHECK ----------
103 ;
104 F0061 sw_int1:
105 ;========== start ==========
106 F0061 EB64 fset i
107 F0063 F5F5FF W jsr delay
108 F0066 5B70 S* btst 3,p8
109 F0068 680A jc sw1
110 F006A E50184 S* cmp.b #1,sw_in
111 F006D DD008401 * stzx #0,#1,sw_in ;sw_in=sw_in xor 1
112 F0071 B585 Z* mov.b #0,cnt_clr ; sw_in flag clear
113 F0073 FB sw1: reit
114
115 F0074 sw_int0:
116
117 F0074 FB reit
118
119 F0075 sw_adtrg:
120 ;========== clear ==========
121 F0075 EB64 fset i
122 F0077 C50185 S* mov.b #1,cnt_clr ; timer count flag on
123 F007A FB reit
* M16C FAMILY ASSEMBLER * SOURCE LIST Tue Mar 29 14:22:24 2005 PAGE 003
SEQ. LOC. OBJ. 0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4
124 ;
125 ;---------- TIMER COUNT ----------
126 ;
127 F007B timer:
128 F007B 82 S push.b r0l
129
130 F007C E50184 S* cmp.b #1,sw_in ; sw_in - 1(start?)
131 F007F 6E19 jnz timer_end ; jump not ZERO
132 F0081 0982 S* mov.b Tsec,r0l ; Tsec => r0l
133 F0083 7CEC01 dadd.b #1,r0l ; 1sec count up
134 F0086 0182 S* mov.b r0l,Tsec ; r0l => Tsec
135 F0088 E50185 S* cmp.b #1,cnt_clr
136 F008B CD0082 * stz #00,Tsec
137 F008E CD0084 * stz #0,sw_in ; sw_in flag clear(stop)
138 F0091 0982 S* mov.b Tsec,r0l ; Tsec => r0l
139 F0093 7C8A80 * movll r0l,LED ; r0l => LED(low => low)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -