📄 mainloop.ls1
字号:
628 ; SOURCE LINE # 156
0017 C293 629 CLR MCU_LED1
630 ; loop_delay(100);
631 ; SOURCE LINE # 157
0019 7F64 632 MOV R7,#064H
001B 7E00 633 MOV R6,#00H
001D 120000 F 634 LCALL _loop_delay
635 ; MCU_LED1 = 1;
636 ; SOURCE LINE # 158
0020 D293 637 SETB MCU_LED1
638 ; loop_delay(100);
639 ; SOURCE LINE # 159
0022 640 ?C0056:
0022 7F64 641 MOV R7,#064H
0024 7E00 642 MOV R6,#00H
0026 120000 F 643 LCALL _loop_delay
644 ;
645 ; }
646 ; SOURCE LINE # 161
647 ; }
648 ; SOURCE LINE # 162
0029 649 ?C0003:
0029 0500 F 650 INC i?041+01H
002B E500 F 651 MOV A,i?041+01H
002D 7002 652 JNZ ?C0053
002F 0500 F 653 INC i?041
0031 654 ?C0053:
0031 C3 655 CLR C
0032 9403 656 SUBB A,#03H
0034 E500 F 657 MOV A,i?041
0036 9400 658 SUBB A,#00H
0038 40CD 659 JC ?C0001
660 ; }
661 ; SOURCE LINE # 163
003A 662 ?C0006:
003A 22 663 RET
664 ; END OF _blinkLED
665
666 ; /* Configure Timer 0
667 ; - Mode = 1
668 ; - Interrupt = ENABLED
669 ; - Clock Source = INTERNAL
670 ; - Enable Gating Control = DISABLED
671 ; */
672 ; void init_timer0(void)
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 12
673
---- 674 RSEG ?PR?init_timer0?MAINLOOP
0000 675 init_timer0:
676 ; SOURCE LINE # 170
677 ; {
678 ; SOURCE LINE # 171
679 ; /* Configure Timer 0 as a 16 bit timer */
680 ; TMOD &= 0XF0; /* clear Timer 0, timer 1 left unchanged */
681 ; SOURCE LINE # 173
0000 5389F0 682 ANL TMOD,#0F0H
683 ; TMOD |= 0X1; /* set timer working mode 1 */
684 ; SOURCE LINE # 174
0003 438901 685 ORL TMOD,#01H
686 ;
687 ; /* load the timer registers with the initial timer value */
688 ; TL0 = 0X0; /* value set by user */
689 ; SOURCE LINE # 177
0006 E4 690 CLR A
0007 F58A 691 MOV TL0,A
692 ; TH0 = 0X0; /* value set by user */
693 ; SOURCE LINE # 178
0009 F58C 694 MOV TH0,A
695 ;
696 ; ET0 = 1; /* Allow timer 0 interrupt */
697 ; SOURCE LINE # 180
000B D2A9 698 SETB ET0
699 ; TR0 = 1; /* Start timer 0 */
700 ; SOURCE LINE # 181
000D D28C 701 SETB TR0
702 ; PT0 = 1; /* Set timer 0 interrupt high priority */
703 ; SOURCE LINE # 182
000F D2B9 704 SETB PT0
705 ;
706 ; EA = 1;
707 ; SOURCE LINE # 184
0011 D2AF 708 SETB EA
709 ; }
710 ; SOURCE LINE # 185
0013 22 711 RET
712 ; END OF init_timer0
713
714 ;
715 ; void init_special_interrupts(void)
716
---- 717 RSEG ?PR?init_special_interrupts?MAINLOOP
0000 718 init_special_interrupts:
719 ; SOURCE LINE # 187
720 ; {
721 ; SOURCE LINE # 188
722 ; IT0 = 0;
723 ; SOURCE LINE # 189
0000 C288 724 CLR IT0
725 ; EX0 = 1; // allow external INT0 interrupt
726 ; SOURCE LINE # 190
0002 D2A8 727 SETB EX0
728 ; PX0 = 0; // set INT0 low interrupt priority
729 ; SOURCE LINE # 191
0004 C2B8 730 CLR PX0
731 ; }
732 ; SOURCE LINE # 192
0006 22 733 RET
734 ; END OF init_special_interrupts
735
736 ;
737 ; void init_port()
738
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 13
---- 739 RSEG ?PR?init_port?MAINLOOP
0000 740 init_port:
741 ; SOURCE LINE # 194
742 ; {
743 ; SOURCE LINE # 195
744 ; P0 = 0xFF;
745 ; SOURCE LINE # 196
0000 7580FF 746 MOV P0,#0FFH
747 ; P1 = 0xFF;
748 ; SOURCE LINE # 197
0003 7590FF 749 MOV P1,#0FFH
750 ; P2 = 0xFF;
751 ; SOURCE LINE # 198
0006 75A0FF 752 MOV P2,#0FFH
753 ;
754 ; D12SUSPD = 0; /* Prevents D12 to go into Suspend state */
755 ; SOURCE LINE # 200
0009 C2B3 756 CLR D12SUSPD
757 ; }
758 ; SOURCE LINE # 201
000B 22 759 RET
760 ; END OF init_port
761
762 ;
763 ; void main(void)
764
---- 765 RSEG ?PR?main?MAINLOOP
0000 766 main:
767 USING 0
768 ; SOURCE LINE # 203
769 ; {
770 ; SOURCE LINE # 204
771 ; BOOL in_loop = TRUE;
772 ; SOURCE LINE # 205
0000 750001 F 773 MOV in_loop?442,#01H
774 ; unsigned char key, i;
775 ;
776 ; init_port();
777 ; SOURCE LINE # 208
0003 120000 F 778 LCALL init_port
779 ;
780 ; init_timer0();
781 ; SOURCE LINE # 210
0006 120000 F 782 LCALL init_timer0
783 ;
784 ; init_special_interrupts();
785 ; SOURCE LINE # 212
0009 120000 F 786 LCALL init_special_interrupts
787 ;
788 ; bEPPflags.value = 0; /* clear flags of bEPPflags */
789 ; SOURCE LINE # 214
000C E4 790 CLR A
000D F500 F 791 MOV bEPPflags,A
000F F500 F 792 MOV bEPPflags+01H,A
793 ;
794 ; /* Power on reset, lightup LEDs for 1 sec,
795 ; disconnect and reconnect Soft-Connect */
796 ; reconnect_USB();
797 ; SOURCE LINE # 218
0011 120000 F 798 LCALL reconnect_USB
0014 799 ?C0010:
800 ;
801 ; /* Main program loop */
802 ; while( in_loop ) {
803 ; SOURCE LINE # 221
0014 E500 F 804 MOV A,in_loop?442
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 14
0016 605D 805 JZ ?C0017
806 ;
807 ; /* timer 0 overflow */
808 ; if (bEPPflags.bits.timer) {
809 ; SOURCE LINE # 224
0018 AF00 F 810 MOV R7,bEPPflags
001A EF 811 MOV A,R7
001B 30E014 812 JNB ACC.0,?C0012
813 ; DISABLE;
814 ; SOURCE LINE # 225
001E C2AF 815 CLR EA
816 ; bEPPflags.bits.timer = 0;
817 ; SOURCE LINE # 226
0020 AF00 F 818 MOV R7,bEPPflags
0022 EF 819 MOV A,R7
0023 54FE 820 ANL A,#0FEH
0025 F500 F 821 MOV bEPPflags,A
822 ; ENABLE;
823 ; SOURCE LINE # 227
0027 D2AF 824 SETB EA
825 ; if(bEPPflags.bits.configuration)
826 ; SOURCE LINE # 228
0029 AF00 F 827 MOV R7,bEPPflags+01H
002B EF 828 MOV A,R7
002C 30E003 829 JNB ACC.0,?C0012
830 ; check_key_LED();
831 ; SOURCE LINE # 229
002F 120000 F 832 LCALL check_key_LED
833 ; }
834 ; SOURCE LINE # 230
0032 835 ?C0012:
836 ;
837 ; if (bEPPflags.bits.bus_reset) {
838 ; SOURCE LINE # 232
0032 AF00 F 839 MOV R7,bEPPflags
0034 EF 840 MOV A,R7
0035 C3 841 CLR C
0036 13 842 RRC A
0037 30E00B 843 JNB ACC.0,?C0014
844 ; DISABLE;
845 ; SOURCE LINE # 233
003A C2AF 846 CLR EA
847 ; bEPPflags.bits.bus_reset = 0;
848 ; SOURCE LINE # 234
003C AF00 F 849 MOV R7,bEPPflags
003E EF 850 MOV A,R7
003F 54FD 851 ANL A,#0FDH
0041 F500 F 852 MOV bEPPflags,A
853 ; ENABLE;
854 ; SOURCE LINE # 235
0043 D2AF 855 SETB EA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -