📄 linsci.ls
字号:
483 0012 2713 jreq L161
484 ; 182 SCIDR;
486 0014 b600 ld a,_SCIDR
487 ; 183 Rx_Index = 0; // Resert the index for receive again
489 0016 4f clr a
490 0017 c70005 ld L5_Rx_Index,a
491 ; 184 PtrToSCIBuffRx = Lin_Rx_Buffer;
493 001a ae07 ld x,#high(_Lin_Rx_Buffer)
494 001c cf0000 ld _PtrToSCIBuffRx,x
495 001f a607 ld a,#low(_Lin_Rx_Buffer)
496 0021 c70001 ld _PtrToSCIBuffRx+1,a
498 0024 cc0121 jra L502
499 0027 L161:
500 ; 188 *PtrToSCIBuffRx = SCIDR;
502 0027 c60000 ld a,_PtrToSCIBuffRx
503 002a b700 ld c_x,a
504 002c c60001 ld a,_PtrToSCIBuffRx+1
505 002f b701 ld c_x+1,a
506 0031 b600 ld a,_SCIDR
507 0033 92c700 ld [c_x.w],a
508 ; 189 Rx_Index++;
510 0036 c60005 ld a,L5_Rx_Index
511 0039 4c inc a
512 003a c70005 ld L5_Rx_Index,a
513 ; 190 switch (Rx_Index)
515 003d c60005 ld a,L5_Rx_Index
517 0040 4a dec a
518 0041 271a jreq L131
519 0043 4a dec a
520 0044 2740 jreq L331
521 0046 4a dec a
522 0047 2757 jreq L531
523 0049 4a dec a
524 004a 276d jreq L731
525 004c 4a dec a
526 004d 276a jreq L731
527 004f 4a dec a
528 0050 2767 jreq L731
529 0052 4a dec a
530 0053 2764 jreq L731
531 0055 4a dec a
532 0056 2761 jreq L731
533 0058 4a dec a
534 0059 2770 jreq L141
535 005b 2005 jra L341
536 005d L131:
537 ; 192 case 1:
537 ; 193 if (*PtrToSCIBuffRx != 0x00) goto Error_Handler;
539 005d 92c600 ld a,[c_x.w]
540 0060 2711 jreq L171
542 0062 L341:
543 ; 216 default:
543 ; 217 Error_Handler: Rx_Index = 0; // Resert the index for receive again
545 0062 4f clr a
546 0063 c70005 ld L5_Rx_Index,a
547 ; 218 PtrToSCIBuffRx = Lin_Rx_Buffer;
549 0066 ae07 ld x,#high(_Lin_Rx_Buffer)
550 0068 cf0000 ld _PtrToSCIBuffRx,x
551 006b a607 ld a,#low(_Lin_Rx_Buffer)
552 006d c70001 ld _PtrToSCIBuffRx+1,a
553 ; 219 break;
555 0070 cc0121 jra L502
556 0073 L171:
557 ; 194 else PtrToSCIBuffRx++;
559 0073 c60001 ld a,_PtrToSCIBuffRx+1
560 0076 ab01 add a,#1
561 0078 c70001 ld _PtrToSCIBuffRx+1,a
562 007b c60000 ld a,_PtrToSCIBuffRx
563 007e a900 adc a,#0
564 0080 c70000 ld _PtrToSCIBuffRx,a
565 0083 cc0121 jra L502
566 0086 L331:
567 ; 196 case 2:
567 ; 197 if (*PtrToSCIBuffRx != 0x01) goto Error_Handler;
569 0086 92c600 ld a,[c_x.w]
570 0089 a101 cp a,#1
571 008b 26d5 jrne L341
574 ; 198 else PtrToSCIBuffRx++;
576 008d c60001 ld a,_PtrToSCIBuffRx+1
577 0090 ab01 add a,#1
578 0092 c70001 ld _PtrToSCIBuffRx+1,a
579 0095 c60000 ld a,_PtrToSCIBuffRx
580 0098 a900 adc a,#0
581 009a c70000 ld _PtrToSCIBuffRx,a
582 009d cc0121 jra L502
583 00a0 L531:
584 ; 200 case 3:
584 ; 201 if (*PtrToSCIBuffRx != 0x10) goto Error_Handler;
586 00a0 92c600 ld a,[c_x.w]
587 00a3 a110 cp a,#16
588 00a5 26bb jrne L341
591 ; 202 else PtrToSCIBuffRx++;
593 00a7 c60001 ld a,_PtrToSCIBuffRx+1
594 00aa ab01 add a,#1
595 00ac c70001 ld _PtrToSCIBuffRx+1,a
596 00af c60000 ld a,_PtrToSCIBuffRx
597 00b2 a900 adc a,#0
598 00b4 c70000 ld _PtrToSCIBuffRx,a
599 00b7 2068 jra L502
600 00b9 L731:
601 ; 204 case 4:
601 ; 205 case 5:
601 ; 206 case 6:
601 ; 207 case 7:
601 ; 208 case 8:
601 ; 209 PtrToSCIBuffRx++;
603 00b9 c60001 ld a,_PtrToSCIBuffRx+1
604 00bc ab01 add a,#1
605 00be c70001 ld _PtrToSCIBuffRx+1,a
606 00c1 c60000 ld a,_PtrToSCIBuffRx
607 00c4 a900 adc a,#0
608 00c6 c70000 ld _PtrToSCIBuffRx,a
609 ; 210 break;
611 00c9 2056 jra L502
612 00cb L141:
613 ; 211 case 9:
613 ; 212 Rx_Index = 0; // prepare for next receive
615 00cb c70005 ld L5_Rx_Index,a
616 ; 213 PtrToSCIBuffRx = Lin_Rx_Buffer;
618 00ce ae07 ld x,#high(_Lin_Rx_Buffer)
619 00d0 cf0000 ld _PtrToSCIBuffRx,x
620 00d3 a607 ld a,#low(_Lin_Rx_Buffer)
621 00d5 c70001 ld _PtrToSCIBuffRx+1,a
622 ; 214 SCI_Status |= RX_Complete;
624 00d8 c60004 ld a,L7_SCI_Status
625 00db aa80 or a,#128
626 00dd c70004 ld L7_SCI_Status,a
627 ; 215 break;
629 00e0 203f jra L502
630 00e2 L751:
631 ; 224 else if (SCISR & SCI_TDRE) // Checks if TDRE Flag is set
633 00e2 0f003c btjf _SCISR,#7,L502
634 ; 226 if (Tx_Index > 1) // Checks if all the bytes are transmitted
636 00e5 c60006 ld a,L3_Tx_Index
637 00e8 a102 cp a,#2
638 00ea 2525 jrult L112
639 ; 228 Tx_Index--;
641 00ec c60006 ld a,L3_Tx_Index
642 00ef 4a dec a
643 00f0 c70006 ld L3_Tx_Index,a
644 ; 229 PtrToSCIBuffTx++; /*Moves the pointer to next location*/
646 00f3 c60003 ld a,_PtrToSCIBuffTx+1
647 00f6 ab01 add a,#1
648 00f8 c70003 ld _PtrToSCIBuffTx+1,a
649 00fb c60002 ld a,_PtrToSCIBuffTx
650 00fe a900 adc a,#0
651 0100 c70002 ld _PtrToSCIBuffTx,a
652 ; 230 SCIDR = *PtrToSCIBuffTx; /*Transmits a single byte*/
654 0103 b700 ld c_x,a
655 0105 c60003 ld a,_PtrToSCIBuffTx+1
656 0108 b701 ld c_x+1,a
657 010a 92c600 ld a,[c_x.w]
658 010d b700 ld _SCIDR,a
660 010f 2010 jra L502
661 0111 L112:
662 ; 232 else if(Tx_Index == 1)
664 0111 c60006 ld a,L3_Tx_Index
665 0114 a101 cp a,#1
666 0116 2609 jrne L502
667 ; 234 Tx_Index--;
669 0118 c60006 ld a,L3_Tx_Index
670 011b 4a dec a
671 011c c70006 ld L3_Tx_Index,a
672 ; 235 SCICR2 &= (u8)(~SCI_TIE); /*Disable IT if all bytes
674 011f 1f00 bres _SCICR2,#7
675 0121 L502:
676 ; 239 }
679 0121 b600 ld a,_SCI_IT_Routine$L+0
680 0123 b700 ld c_x,a
681 0125 b601 ld a,_SCI_IT_Routine$L+1
682 0127 b701 ld c_x+1,a
683 0129 80 iret
773 switch .bss
774 0000 _PtrToSCIBuffRx:
775 0000 0000 ds.b 2
776 xdef _PtrToSCIBuffRx
777 0002 _PtrToSCIBuffTx:
778 0002 0000 ds.b 2
779 xdef _PtrToSCIBuffTx
780 0004 L7_SCI_Status:
781 0004 00 ds.b 1
782 0005 L5_Rx_Index:
783 0005 00 ds.b 1
784 0006 L3_Tx_Index:
785 0006 00 ds.b 1
786 xref _Resert_SCIRX_Watchdog
787 xref _Timer_IsSCITXDelayElapsed
788 xref _Timer_SetSCITXDelayPeriod
789 xref _Set_SpdVarPeriod
790 xref _Set_TargetSpeed
791 xref _Freq_Motor
792 xdef _SCI_IsReceptionCompleted
793 xdef _SCI_IsTransmitCompleted
794 xdef _SCI_IT_Routine
795 xdef _SCI_Send_Data
796 xdef _SCI_Config
797 xdef _MotorStatus_Backup
798 0007 _Lin_Rx_Buffer:
799 0007 000000000000 ds.b 9
800 xdef _Lin_Rx_Buffer
801 0010 _Lin_Tx_Buffer:
802 0010 000000000000 ds.b 9
803 xdef _Lin_Tx_Buffer
804 xref.b _SCICR2
805 xref.b _SCICR1
806 xref.b _SCIBRR
807 xref.b _SCIDR
808 xref.b _SCISR
809 xref.b c_x
810 xref.b c_y
830 xref c_udiv
831 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -