📄 light.lst
字号:
1 000000 ;***********************************************************************************************
2 000000 ;File name :light_main.asm
3 000000 ;Author :bili
4 000000 ;Purpose :Training
5 000000 ;Data :12/8/2008
6 000000 ;Dscription :流水灯
7 000000 ;Version: v1.1
8 000000 ;Hardware&IDE: m2 1.14
9 000000 ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.
10 000000 ;*************************************************************************************************
11 000000 CHIP SN8P2708A
12 000000 //{{SONIX_CODE_OPTION
13 000000 .Code_Option Noise_Filter Enable
14 000000 .Code_Option Watch_Dog Enable ; Normal mode: Enable Watchdog Green mode : Enable Watchdog Sleep mode : Stop Watchdog
15 000000 .Code_Option High_Clk 4M_X'tal ; Crystal/Resonator: 2Mhz~10Mhz
16 000000 .Code_Option Fcpu #2 ; Fcpu = Fosc/4
17 000000 .Code_Option Security Enable
18 000000 //}}SONIX_CODE_OPTION
19 000000
20 000000
21 000000 .CONST
22 000000 INCLUDE light_equ.asm
23 000000 ;***********************************************************************************************
24 000000 ;File name :light_equ.asm
25 000000 ;Author :guangyu_yang
26 000000 ;Purpose :Training
27 000000 ;Data :2/8/2007
28 000000 ;Dscription :常量定义
29 000000 ;Version: v1.1
30 000000 ;Hardware&IDE: m2 1.14
31 000000 ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.
32 000000 ;*************************************************************************************************
33 E 00000003 keydelaytime equ 3 ;按键扫描延迟时间
34 E 000000D1 portrange equ p1 ;p1口的寄存器
35 E 00000040 div64 equ 64
36 E 0000000A adddelayval equ 10 ;加速进度
37 E 0000000A subdelayval equ 10 ;减速进度
38 000000 .DATA
39 000000 INCLUDE light_ram.asm
40 000000 ;***********************************************************************************************
41 000000 ;File name :light_ram.asm
42 000000 ;Author :guangyu_yang
43 000000 ;Purpose :Training
44 000000 ;Data :2/8/2007
45 000000 ;Dscription :系统变量定义
46 000000 ;Version: v1.1
47 000000 ;Hardware&IDE: m2 1.14
48 000000 ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.
49 000000 ;*************************************************************************************************
50 000000
51 000000
52 0000 D keyinbuf ds 1 ;按键扫描寄存器
53 000001
54 0001 D keychkbuf ds 1 ;按键检测寄存器
55 000002
56 0002 D keycvtbuf ds 1 ;按键处理结果寄存器
57 000003
58 0003 D keyoldbuf ds 1 ;保留上次按键的处理结果
59 000004
60 000004
61 0004 D accbuf ds 1 ;累加器寄存器
62 000005
63 0005 D keychat ds 1 ;按键消抖处理时间100ms
64 0006 D keyresult ds 1
65 000007
66 0007 D delayvalbuf ds 1
67 0008 D delayvalue ds 1
68 000009
69 0009 D leftledbuf ds 1
70 000A D rightledbuf ds 1
71 000B D lrledbuf ds 1
72 00000C
73 000C D mode ds 1 ;mode=0,close the led
74 00000D ;mode=1;shift left the led
75 00000D ;mode=2;shift right the led
76 00000D ;mode=3,shift from middle
77 000D D test ds 1
78 00000E
79 000E D flag1 ds 1 ;标志寄存器
80 E 0000000E fkey_timer equ flag1.0 ;10ms时间标志位
81 E 0001000E ft0_10ms equ flag1.1 ;1ms的昂市标志位
82 E 0002000E fkey_in equ flag1.2
83 E 0003000E fkeycvt equ flag1.3
84 E 0004000E timeout equ flag1.4
85 E 0005000E delayflag equ flag1.5
86 000F D flag2 ds 1
87 E 0000000F fleftled equ flag2.0
88 E 0001000F frightled equ flag2.1
89 E 0002000F flrled equ flag2.2
90 E 0003000F addledflag equ flag2.3
91 E 0004000F subledflag equ flag2.4
92 000000 .CODE
93 000000 ORG 00H
94 000000 8010(2) jmp reset
95 000008 ORG 08H
96 000008 8063(2) jmp isr
97 000010 ORG 10H
98 000010 /**************************************************
99 000010 Subroutine: RESET
100 000010 Description: initial all of the system reg ,user define reg ,Variables and I/O
101 000010 Calls: sysinit
102 000010 Input: no
103 000010 Output: no
104 000010 Stack: 1
105 000010
106 000010 *************************************************/
107 000010
108 000010 reset:
109 000010 2D7F(1) mov a,#7fh ;初始化堆栈指针
110 000011 2FDF(1) b0mov stkp,a
111 000012 2B86(1) clr pflag
112 000013 C02C(2) call sysinit ;调用系统初始化程序
113 000014 2D0E(1) mov a,#0Eh ;初始化按键状态
114 000015 2F00(1) b0mov keyinbuf,a
115 000016 2F01(1) b0mov keychkbuf,a
116 000017 2F02(1) b0mov keycvtbuf,a
117 000018 2F03(1) b0mov keyoldbuf,a
118 000019 2D01(1) mov a,#01h ;流水灯初始化值
119 00001A 1F09(1) mov leftledbuf,a
120 00001B 2D08(1) mov a,#08h
121 00001C 1F0A(1) mov rightledbuf,a
122 00001D 2D09(1) mov a,#09h
123 00001E 1F0B(1) mov lrledbuf,a
124 00001F 2D64(1) mov a,#64h ;用来做流水灯延时10*100MS
125 000020 2F08(1) b0mov delayvalue,a
126 000021 2F07(1) b0mov delayvalbuf,a
127 000022 2D00(1) mov a,#00h ;初始化按键模式
128 000023 1F0C(1) mov mode,a
129 000024
130 000024
131 000024 6FDF(1) b0bset fgie
132 000025 /**************************************************
133 000025 Subroutine: main
134 000025 *************************************************/
135 000025
136 000025 main:
137 000025 clrwdr
138 000025 2D5A(1) mov a,#5ah
139 000026 2FCC(1) b0mov wdtr,a ;清狗
140 000027 C06E(2) call mn_intgnd ;中断与底层驱动的中间函数
141 000028 C07D(2) call mn_key ;按键扫描
142 000029 C0B9(2) call mn_app ;用户应用程序
143 00002A C0CC(2) call mn_led
144 00002B 8025(2) jmp main
145 00002C /************************************************
146 00002C include file
147 00002C *************************************************/
148 00002C INCLUDE light_init.asm
149 00002C ;***********************************************************************************************
150 00002C ;File name :light_init.asm
151 00002C ;Author :guangyu_yang
152 00002C ;Purpose :Training
153 00002C ;Data :2/8/2007
154 00002C ;Dscription :系统初始化
155 00002C ;Version: v1.1
156 00002C ;Hardware&IDE: m2 1.14
157 00002C ;Copyright(C).SONIX TECHNOLOGY CO.,Ltd.
158 00002C ;*************************************************************************************************
159 00002C sysinit:
160 00002C clrwdr ;清狗
161 00002C 2D5A(1) mov a,#5ah
162 00002D 2FCC(1) b0mov wdtr,a ;清狗
163 00002E C033(2) call init_oscm ;系统运行状态初始化
164 00002F C036(2) call init_ram ;ram初始化
165 000030 C045(2) call init_io ;io口初始化
166 000031 C059(2) call init_t0 ;t0初始化
167 000032 0E00(2) ret
168 000033 /**************************************************
169 000033 Subroutine: init_oscm
170 000033 Description: 初始化震荡模式
171 000033 Calls: N0
172 000033 Variables: N0
173 000033 Input: N0
174 000033 Output: N0
175 000033 *************************************************/
176 000033
177 000033 init_oscm:
178 000033 2D00(1) mov a,#00h ;系统在正常状态运行
179 000034 2FCA(1) b0mov oscm,a
180 000035 0E00(2) ret
181 000036
182 000036
183 000036 /**************************************************
184 000036 Subroutine: init_oscm
185 000036 Description: 初始化RAM,将RAM中的单元清0
186 000036 Calls: N0
187 000036 Variables: N0
188 000036 Input: N0
189 000036 Output: N0
190 000036 *************************************************/
191 000036 ;clear BANK0
192 000036
193 000036 init_ram:
194 000036 2B84(1) clr Y
195 000037 337F(1) b0mov Z , #7fh
196 000038 clr_bank0:
197 000038 2BE7(1) clr @YZ
198 000039 2683(1+S) decms Z
199 00003A 8038(2) jmp clr_bank0
200 00003B 2BE7(1) clr @YZ
201 00003C
202 00003C ;clear BAKN1
203 00003C 2D01(1) mov a,#1
204 00003D 2F84(1) b0mov Y,A
205 00003E 2D7F(1) mov A,#0x7f
206 00003F 2F83(1) b0mov Z,A ;Set @YZ address from 17fh
207 000040
208 000040 ClrRAM20:
209 000040 2BE7(1) clr @YZ ;Clear @YZ content
210 000041 2683(1+S) decms Z ;z = z - 1 , skip next if z=0
211 000042 8040(2) jmp ClrRAM20
212 000043 2BE7(1) clr @YZ ;Clear address 0x100
213 000044 0E00(2) ret
214 000045
215 000045 /**************************************************
216 000045 Subroutine: init_i/o
217 000045 Description: 初始化I/O
218 000045 Calls: N0
219 000045 Variables: N0
220 000045 Input: N0
221 000045 Output: N0
222 000045 *************************************************/
223 000045 init_io:
224 000045 ;p1口初始化
225 000045 2DFF(1) mov a,#0ffh ;设置p1口为输入,上拉
226 000046 2FE1(1) b0mov p1ur,a
227 000047 2D00(1) mov a,#0 ;注意这里,否则读入的结果有错误。
228 000048 2FC1(1) b0mov p1m,a
229 000049 ;p2口初始化
230 000049 2D00(1) mov a,#0
231 00004A 1FD2(1) mov p2,a
232 00004B 1FC2(1) mov p2m,a
233 00004C
234 00004C ;P0口初始化
235 00004C 2BD0(1) clr p0
236 00004D 2D00(1) mov a,#0
237 00004E 1FB8(1) mov p0m,a
238 00004F ;P3口初始化
239 00004F 2BD3(1) clr p3
240 000050 2D00(1) mov a,#0
241 000051 1FC3(1) mov p3m,a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -