Смекни!
smekni.com

Управление шаговым двигателем микропроцессорной системой (стр. 3 из 3)

0123 08 166 inc r0

0124 E6 167 mov A,@r0

0125 A4 168 mul AB

0126 DAF6 169 djnz r2,n1000

0128 2E 170 add A,r6

0129 FE 171 mov r6,A

012A E5F0 172 mov A,B

012C 2F 173 add A,r7

012D FF 174 mov r7,A

012E AA02 175 n100: mov r2,2

0130 75F00A 176 mov B,#10

0133 08 177 inc r0

0134 E6 178 mov A,@r0

0135 A4 179 mul AB

0136 DAF6 180 djnz r2,n100

0138 2E 181 add A,r6

0139 FE 182 mov r6,A

013A E5F0 183 mov A,B

013C 2F 184 add A,r7

013D FF 185 mov r7,A

013E AA01 186 n10: mov r2,1

0140 75F00A 187 mov B,#10

0143 08 188 inc r0

0144 E6 189 mov A,@r0

0145 A4 190 mul AB

A51 MACRO ASSEMBLER KURS 06/05/2008 09:31:04 PAGE 4

0146 DAF6 191 djnz r2,n10

0148 2E 192 add A,r6

0149 FE 193 mov r6,A

014A E5F0 194 mov A,B

014C 2F 195 add A,r7

014D FF 196 mov r7,A

014E 08 197 inc r0

014F E6 198 mov A,@r0

0150 2E 199 add A,r6

0151 FE 200 mov r6,A

201

0152 EF 202 mov A,r7

0153 8502F0 203 mov B,2

0156 84 204 div AB

0157 AFF0 205 mov r7,B

0159 EE 206 mov A,r6

015A 8502F0 207 mov B,2

015D 84 208 div AB

015E AEF0 209 mov r6,B

210

0160 31D9 211 call freq_plus

0162 316D 212 call freq_minus

213

0164 D000 214 pop 0h

0166 D002 215 pop 2h

0168 D006 216 pop 6h

016A D007 217 pop 7h

016C 22 218 ret

219

220

016D C000 221 freq_minus: push 0h

016F C001 222 push 1h

0171 C006 223 push 6h

0173 C007 224 push 7h

0175 ED 225 mov A,r5

0176 F8 226 mov r0,A

0177 79FF 227 mov r1,#0ffh

0179 0F 228 inc r7

017A 31EE 229 mainm: call pulse

017C DEFC 230 djnz r6,mainm

017E DFFA 231 djnz r7,mainm

0180 410E 232 jmp en

0182 D280 233 pulsem: setb P0.0

0184 318B 234 call timerm

0186 C280 235 clr P0.0

0188 319C 236 call testm

018A 22 237 ret

018B 758901 238 timerm: mov tmod,#1

018E 888C 239 mov th0,r0

0190 898A 240 mov tl0,r1

0192 D28C 241 setb tr0

0194 108D02 242 waitm: jbc tf0,okm

0197 80FB 243 sjmp waitm

0199 C28C 244 okm: clr tr0

019B 22 245 ret

019C B80001 246 testm: cjne r0,#0h,dalm

019F 22 247 ret

01A0 18 248 dalm: dec r0

01A1 22 249 ret

01A2 D000 250 enm: pop 0h

01A4 D001 251 pop 1h

01A6 D006 252 pop 6h

01A8 D007 253 pop 7h

01AA 22 254 ret

255

01AB C000 256 LCD: push 0h

A51 MACRO ASSEMBLER KURS 06/05/2008 09:31:04 PAGE 5

01AD C001 257 push 1h

01AF C002 258 push 2h

01B1 7904 259 mov r1,#4

01B3 E8 260 mov A,r0

01B4 C4 261 swap A

01B5 F8 262 mov r0,A

01B6 E8 263 LDL: mov A,r0

01B7 33 264 rlc A

01B8 4004 265 jc LD1

01BA C2A0 266 LD0: clr p2.0

01BC 8002 267 jmp STR

01BE D2A0 268 LD1: setb p2.0

01C0 D2A1 269 STR: setb p2.1

01C2 7A05 270 mov r2,#5

01C4 DAFE 271 HNG1: djnz r2,HNG1

01C6 C2A1 272 clr p2.1

01C8 7A0A 273 mov r2,#10

01CA DAFE 274 HNG2: djnz r2,HNG2

01CC D9E8 275 djnz r1,LDL

01CE 7A19 276 mov r2,#25

01D0 DAFE 277 HNG3: djnz r2,HNG3

01D2 D000 278 pop 0h

01D4 D001 279 pop 1h

01D6 D002 280 pop 2h

01D8 22 281 ret

282

01D9 C000 283 freq_plus: push 0h

01DB C001 284 push 1h

01DD C006 285 push 6h

01DF C007 286 push 7h

01E1 7800 287 mov r0,#0h

01E3 79FF 288 mov r1,#0ffh

01E5 0F 289 inc r7

01E6 31EE 290 main: call pulse

01E8 DEFC 291 djnz r6,main

01EA DFFA 292 djnz r7,main

01EC 8020 293 jmp en

294

01EE D280 295 pulse: setb P0.0

01F0 31F7 296 call timer

01F2 C280 297 clr P0.0

01F4 5108 298 call test

01F6 22 299 ret

01F7 758901 300 timer: mov tmod,#1

01FA 888C 301 mov th0,r0

01FC 898A 302 mov tl0,r1

01FE D28C 303 setb tr0

0200 108D02 304 wait: jbc tf0,ok

0203 80FB 305 sjmp wait

0205 C28C 306 ok: clr tr0

0207 22 307 ret

0208 B8FF01 308 test: cjne r0,#0ffh,dal

020B 22 309 ret

020C 08 310 dal: inc r0

020D 22 311 ret

020E E8 312 en: mov A,r0

020F FD 313 mov r5,A

0210 D000 314 pop 0h

0212 D001 315 pop 1h

0214 D006 316 pop 6h

0216 D007 317 pop 7h

0218 22 318 ret

319

320 END

A51 MACRO ASSEMBLER KURS 06/05/2008 09:31:04 PAGE 6

SYMBOL TABLE LISTING

------ ----- -------

N A M E T Y P E V A L U E ATTRIBUTES

B. . . . . . . . . D ADDR 00F0H A

CNT. . . . . . . . N NUMB 0051H A

DAL. . . . . . . . C ADDR 020CH A

DALM . . . . . . . C ADDR 01A0H A

DEL. . . . . . . . N NUMB 0052H A

EN . . . . . . . . C ADDR 020EH A

ENM. . . . . . . . C ADDR 01A2H A

ENTER. . . . . . . C ADDR 0093H A

ENTER1 . . . . . . C ADDR 0108H A

FREQ_MINUS . . . . C ADDR 016DH A

FREQ_PLUS. . . . . C ADDR 01D9H A

HNG1 . . . . . . . C ADDR 01C4H A

HNG2 . . . . . . . C ADDR 01CAH A

HNG3 . . . . . . . C ADDR 01D0H A

INCR . . . . . . . C ADDR 009BH A

INCR1. . . . . . . C ADDR 00FDH A

INDIKATOR. . . . . C ADDR 0002H A

INIT . . . . . . . C ADDR 0002H A

KEYBOARD . . . . . C ADDR 0099H A

KEYBOARD1. . . . . C ADDR 000AH A

LCD. . . . . . . . C ADDR 01ABH A

LD0. . . . . . . . C ADDR 01BAH A

LD1. . . . . . . . C ADDR 01BEH A

LDL. . . . . . . . C ADDR 01B6H A

MAIN . . . . . . . C ADDR 01E6H A

MAINM. . . . . . . C ADDR 017AH A

N0 . . . . . . . . C ADDR 009DH A

N01. . . . . . . . C ADDR 00EBH A

N1 . . . . . . . . C ADDR 0039H A

N10. . . . . . . . C ADDR 013EH A

N100 . . . . . . . C ADDR 012EH A

N1000. . . . . . . C ADDR 011EH A

N10000 . . . . . . C ADDR 0113H A

N2 . . . . . . . . C ADDR 004BH A

N3 . . . . . . . . C ADDR 005DH A

N4 . . . . . . . . C ADDR 006FH A

N5 . . . . . . . . C ADDR 0081H A

N6 . . . . . . . . C ADDR 00A3H A

N7 . . . . . . . . C ADDR 0095H A

N71. . . . . . . . C ADDR 00B5H A

N8 . . . . . . . . C ADDR 0097H A

N81. . . . . . . . C ADDR 00C7H A

N9 . . . . . . . . C ADDR 009FH A

N91. . . . . . . . C ADDR 00D9H A

OK . . . . . . . . C ADDR 0205H A

OKM. . . . . . . . C ADDR 0199H A

P0 . . . . . . . . D ADDR 0080H A

P1 . . . . . . . . D ADDR 0090H A

P2 . . . . . . . . D ADDR 00A0H A

PULSE. . . . . . . C ADDR 01EEH A

PULSEM . . . . . . C ADDR 0182H A

STEP . . . . . . . C ADDR 00A1H A

STEP1. . . . . . . C ADDR 0100H A

STR. . . . . . . . C ADDR 01C0H A

TEMP . . . . . . . N NUMB 0050H A

TEST . . . . . . . C ADDR 0208H A

TESTM. . . . . . . C ADDR 019CH A

TF0. . . . . . . . B ADDR 0088H.5 A

TH0. . . . . . . . D ADDR 008CH A

TIMER. . . . . . . C ADDR 01F7H A

A51 MACRO ASSEMBLER KURS 06/05/2008 09:31:04 PAGE 7

TIMERM . . . . . . C ADDR 018BH A

TL0. . . . . . . . D ADDR 008AH A

TMOD . . . . . . . D ADDR 0089H A

TR0. . . . . . . . B ADDR 0088H.4 A

WAIT . . . . . . . C ADDR 0200H A

WAITM. . . . . . . C ADDR 0194H A

REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)


6. Проверка работоспособности

Так как основной задачей программы является формирование импульсных последовательностей заданного количества импульсов с нарастающей частотой, а затем и убывающей, то можно предположить, что проверкой правильности работы программы могут служить графики этих последовательностей построенные в microVision. Эти графики приведены ниже.

График импульсной последовательности с нарастающей частотой:

График импульсной последовательности с убывающей частотой:


7. Список использованной литературы

1. А.В. Фрунзе. Микроконтроллеры? Это же просто! Т.1. – М.: ООО “ИД СКИМЕН”, 2002. – 336 с.

2. В.В. Сташин, А.В. Урусов, О.Ф. Мологонцева. Проектирование цифровых устройств на однокристальных микроконтроллерах. - М.: Энергоатомиздат, 1990. – 224 с.

3. Глобальная сеть Internet