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