📄 main.lst
字号:
303
304 ; mov #$30,TSC ; Use this if you
want MCU clock = Tclk (not recommended)
305 ; NOTE you'll
also have to change the timer register values
main.asm Assembled with CASM08Z 3/18/2003 3:17:52 PM PAGE 8
306 ; in rom1.h
78A8 [03] B625 307 lda TSC0
78AA [04] 6E5425 308 mov #$54,TSC0 ; Timer 1 Channel 0
: PWM output with toggle
309 ; on compare;
Tx_Uhf_ISR enabled
310
78AD [03] 450014 311 ldhx #UHF_period ;PWM period =
period UHF
78B0 [04] 3523 312 sthx TMODH
78B2 [03] 45000A 313 ldhx #UHF_duty_cycle ; PWM duty cycle =
50%
78B5 [04] 3526 314 sthx TCH0H
315
78B7 [04] 1B20 316 bclr 5,TSC ; Start the timer
317
78B9 [02] 88 318 pulx ; restore h & x
78BA [02] 8A 319 pulh
320
78BB [04] 81 321 rts
322
323 ;/**************************************************
***************************/
324 ;/* Wake_up_Rx
*/
325 ;/* Description : it starts the transmission of a
tone at 9600 bauds for 64 ms*/
326 ;/* In :
*/
327 ;/* Out : nb_1
*/
328 ;/* local variables : H:X
*/
329 ;/**************************************************
***************************/
330
331 Wake_up_Rx:
332
78BC [02] 8B 333 pshh
78BD [02] 89 334 pshx
335
78BE [04] 1201 336 bset Enable,PORTB
337
78C0 [03] 45017D 338 ldhx #wait_1_8ms ; wait for Tango3
PLL being settled
78C3 [05] CD7880 339 jsr Tempo
340
78C6 [03] 450020 341 ldhx #nb_wake_up_bit
78C9 [04] 35A5 342 sthx nb_1 ; transmit the tone
78CB [05] CD7892 343 jsr transmit_1
344
78CE [02] 88 345 pulx
78CF [02] 8A 346 pulh
347
78D0 [04] 81 348 rts
349
350 ;/**************************************************
***************************/
main.asm Assembled with CASM08Z 3/18/2003 3:17:52 PM PAGE 9
351 ;/* Tx_UHF_ISR
*/
352 ;/* Description : it decides what to do on timer
overflow */
353 ;/* if current = next, then toggle on timer
overflow, else no toggle */
354 ;/* In : Next_Tx_bit, Current_Tx_Bit
*/
355 ;/* Out : TSC0, nb_1
*/
356 ;/* local variables :
*/
357 ;/**************************************************
***************************/
358
359 Tx_Uhf_ISR:
360
78D1 [02] 8B 361 pshh
362
78D2 [04] 55A5 363 ldhx nb_1 ; if nb_1 = 0, do
not decrement nb_1
78D4 [03] 650000 364 cphx #0000
78D7 [03] 270C 365 beq reenable_Tx_ISR
78D9 [03] B6A6 366 lda nb_1+1 ; else
decrement nb_1
78DB [02] A001 367 sub #1
78DD [03] B7A6 368 sta nb_1+1
78DF [03] B6A5 369 lda nb_1
78E1 [02] A200 370 sbc #0
78E3 [03] B7A5 371 sta nb_1
372
373 reenable_Tx_ISR:
78E5 [03] B625 374 lda tsc0 ; reenable next
input capture isr by reading tsc0
78E7 [02] A47F 375 and #$7f ; &
78E9 [03] B725 376 sta tsc0 ; clearing input
capture flag
377
78EB [03] B6A3 378 lda Next_Tx_Bit ; if next_tx_bit
not equal to Current_tx_bit
78ED [05] 31A205 379 cbeq Current_Tx_Bit,Tovf
380 No_tovf:
78F0 [04] 1325 381 bclr 1,TSC0 ; then no toggle
on overflow
78F2 [03] CC78F7 382 jmp End_Tx_UHF_ISR ;
383 Tovf:
78F5 [04] 1225 384 bset 1,TSC0 ; else toggle on
overflow
385
386 End_Tx_UHF_ISR:
78F7 [02] 8A 387 pulh
388
78F8 [07] 80 389 rti
390
391 ;/**************************************************
***************************/
392 ;/* Transmit
*/
main.asm Assembled with CASM08Z 3/18/2003 3:17:52 PM PAGE 10
393 ;/* Description : it transmits data at 9600 bauds
in Manchester */
394 ;/* In : Tx_byte
*/
395 ;/* Out :
*/
396 ;/* local variables : H:X, current_tx_bit,next_tx_bi
t,current_tx_byte */
397 ;/**************************************************
***************************/
398
399 Transmit:
400
78F9 [03] 450097 401 ldhx #Tx_byte
402
403 Transmit_Downlink:
404
78FC [04] 7EA4 405 mov x+,current_tx_byte
78FE [02] A608 406 lda #$8 ; a = bit pointer
407
408 Transmit_Byte:
7900 [02] 87 409 psha ; save a
7901 [05] 4EA3A2 410 mov Next_Tx_bit,Current_Tx_Bit ;
7904 [04] 38A4 411 lsl current_Tx_Byte ; move next bit in
carry
7906 [03] 2504 412 bcs Next_1 ; if carry not set
413 next_0:
7908 [03] 3FA3 414 clr Next_Tx_bit ; then
next_bit = 0
790A [03] 2003 415 bra Next ;
416 Next_1:
790C [04] 6E01A3 417 mov #$1,Next_Tx_Bit ; else
next_bit =1
418 Next:
790F [01] 8F 419 wait ; half bit
420 ; wait until
next_bit is transmitted
7910 [02] 86 421 pula ; restore a
7911 [03] 4BED 422 dbnza Transmit_Byte ; repeat until the
8 bits are transmitted
423
7913 [04] 51A202 424 cbeqx #Last_byte,transmit_last_bit
7916 [03] 20E4 425 bra Transmit_downlink
426 ; repeat byte
transmit loop until the last byte
427
428 transmit_last_bit:
7918 [05] 4EA3A2 429 mov Next_Tx_bit,Current_Tx_Bit
791B [04] 6E00A3 430 mov #$0,next_tx_bit
791E [01] 8F 431 wait ; exit milieu bit :
wait for the half lsb
432
791F [03] B620 433 lda TSC
7921 [04] 1F20 434 bclr 7,TSC
7923 [05] 0F20FD 435 brclr 7,TSC,*
7926 [04] 1501 436 bclr DATA_RF,PORTB
7928 [03] 3F25 437 clr TSC0
438
main.asm Assembled with CASM08Z 3/18/2003 3:17:52 PM PAGE 11
792A [04] 1501 439 bclr DATA_RF,PORTB
440
792C [03] 450014 441 ldhx #UHF_period ; wait for EOM
792F [05] CD7880 442 jsr Tempo
7932 [03] 450014 443 ldhx #UHF_period
7935 [05] CD7880 444 jsr Tempo
7938 [03] 450014 445 ldhx #UHF_period
793B [05] CD7880 446 jsr Tempo
447
793E [04] 6E0101 448 mov #$01,PORTB ; shut-down the RF,
keep at 315/434MHz
7941 [04] 6E3020 449 mov #$30,TSC ; stop & clear the
timer, fcpu = tclk.
450
7944 [04] 81 451 rts
7945 452 $Include 'makeframe_moroso.asm'
453 ;/**************************************************
***************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -