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