📄 main.lis
字号:
.module main.c
.area text
; mo -> 0,X
; k -> 1,X
; i -> 2,X
; p -> 4,X
; lk -> 6,X
0000 _main::
0000 A7F8 ais #-8
0002 95 tsx
0003 ; /*-----------------------------------------------------*
0003 ; *工 程 名:H08SCI_1 *
0003 ; *硬件连接:无 *
0003 ; *程序描述:把收到的数据发送回去 *
0003 ; *目 的:初步掌握利用查询方式进行串行通信的基本知识 *
0003 ; *-------《嵌入式应用技术基础教程》教学实例------------*/
0003 ; //头文件
0003 ; #include "SCI.h" //串行通信子程序头文件
0003 ; #include "light.h" //灯的初始化头文件
0003 ; //函数声明
0003 ; extern void SCIInit(void); //串行口初始化子程序
0003 ; //内存变量声明
0003 ; unsigned char SerialBuff[]; //存放接收数据的数组
0003 ; void Delay1000(void);
0003 ; //主程序
0003 ; void main()
0003 ; { int lk,i,p;
0003 ; unsigned char k,mo;
0003 ; light_ctrla=0xff;
0003 A6FF lda #-1
0005 B704 sta 0x4
0007 ; light_ctrlb=0x00;
0007 3F05 clr 0x5
0009 ; SCIInit(); //调串行口初始化子程序
0009 CD0000 jsr _SCIInit
000C 95 tsx
000D CC05E9 jmp L3
0010 L2:
0010 ; while(1)
0010 ; {
0010 ; i=SCIReN(1,SerialBuff); //等待接收1个数据
0010 450000 ldhx #_SerialBuff
0013 89 pshx
0014 8B pshh
0015 A601 lda #1
0017 87 psha
0018 CD0000 jsr _SCIReN
001B A703 ais #3
001D 95 tsx
001E B700 sta *__r1
0020 6F02 clr 2,X
0022 E703 sta 3,X
0024 ; if(i==0)
0024 E602 lda 2,X
0026 2703 beq X17
0028 CC05E9 jmp L5
002B X17:
002B E603 lda 3,X
002D 2703 beq X18
002F CC05E9 jmp L5
0032 X18:
0032 ; {
0032 ; k=SerialBuff[0];
0032 B600 lda *_SerialBuff
0034 E701 sta 1,X
0036 ; //8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
0036 ; if(SerialBuff[0]=='1')
0036 B600 lda *_SerialBuff
0038 A131 cmp #49
003A 2703 beq X19
003C CC0170 jmp L7
003F X19:
003F ; { SCISendN(10,"LED效果1");
003F 450029 ldhx #L9
0042 89 pshx
0043 8B pshh
0044 A60A lda #10
0046 87 psha
0047 CD0000 jsr _SCISendN
004A A703 ais #3
004C 95 tsx
004D ; light_a=0xff;
004D A6FF lda #-1
004F B700 sta 0
0051 ; for(lk=0;lk<512;lk++)
0051 6F07 clr 7,X
0053 6F06 clr 6,X
0055 L10:
0055 CD05EF jsr _Delay1000
0058 95 tsx
0059 L11:
0059 E607 lda 7,X
005B AB01 add #1
005D E707 sta 7,X
005F E606 lda 6,X
0061 A900 adc #0
0063 E706 sta 6,X
0065 E607 lda 7,X
0067 B700 sta *__r1
0069 E606 lda 6,X
006B B700 sta *__r0
006D 5500 ldhx *__r0
006F 650200 cphx #512
0072 95 tsx
0073 91E0 blt L10
0075 ; Delay1000();
0075 ; for(i=0;i<8;i++)
0075 6F03 clr 3,X
0077 6F02 clr 2,X
0079 L14:
0079 ; {if((ReSendStatusR & (1<<ReTestBit))==0)
0079 0A1643 brset #5,0x16,L18
007C ; {
007C ; light_a=(0xff)^(1<<i);
007C 6E0000 mov #0,*__r0
007F 6E0100 mov #1,*__r1
0082 E603 lda 3,X
0084 A40F and #15
0086 2706 beq X2
0088 X1:
0088 3800 lsl *__r1
008A 3900 rol *__r0
008C 4BFA dbnza X1
008E X2:
008E B600 lda *__r1
0090 A8FF eor #-1
0092 B700 sta *__r1
0094 B600 lda *__r0
0096 A800 eor #0
0098 4E0000 mov *__r1,0
009B ; for(lk=0;lk<512;lk++)
009B 6F07 clr 7,X
009D 6F06 clr 6,X
009F L20:
009F CD05EF jsr _Delay1000
00A2 95 tsx
00A3 L21:
00A3 E607 lda 7,X
00A5 AB01 add #1
00A7 E707 sta 7,X
00A9 E606 lda 6,X
00AB A900 adc #0
00AD E706 sta 6,X
00AF E607 lda 7,X
00B1 B700 sta *__r1
00B3 E606 lda 6,X
00B5 B700 sta *__r0
00B7 5500 ldhx *__r0
00B9 650200 cphx #512
00BC 95 tsx
00BD 91E0 blt L20
00BF ; Delay1000();
00BF ; }
00BF L18:
00BF L15:
00BF E603 lda 3,X
00C1 AB01 add #1
00C3 E703 sta 3,X
00C5 E602 lda 2,X
00C7 A900 adc #0
00C9 E702 sta 2,X
00CB E603 lda 3,X
00CD B700 sta *__r1
00CF E602 lda 2,X
00D1 B700 sta *__r0
00D3 5500 ldhx *__r0
00D5 650008 cphx #8
00D8 95 tsx
00D9 919E blt L14
00DB ; }
00DB ; light_a=0xff;
00DB A6FF lda #-1
00DD B700 sta 0
00DF ; for(lk=0;lk<512;lk++)
00DF 6F07 clr 7,X
00E1 6F06 clr 6,X
00E3 L24:
00E3 CD05EF jsr _Delay1000
00E6 95 tsx
00E7 L25:
00E7 E607 lda 7,X
00E9 AB01 add #1
00EB E707 sta 7,X
00ED E606 lda 6,X
00EF A900 adc #0
00F1 E706 sta 6,X
00F3 E607 lda 7,X
00F5 B700 sta *__r1
00F7 E606 lda 6,X
00F9 B700 sta *__r0
00FB 5500 ldhx *__r0
00FD 650200 cphx #512
0100 95 tsx
0101 91E0 blt L24
0103 ; Delay1000();
0103 ; for(i=0;i<8;i++)
0103 6F03 clr 3,X
0105 6F02 clr 2,X
0107 L28:
0107 ; {if((ReSendStatusR & (1<<ReTestBit))==0)
0107 0A1643 brset #5,0x16,L32
010A ; {
010A ; light_a=(0xff)^(0x80>>i);
010A 6E0000 mov #0,*__r0
010D 6E8000 mov #-128,*__r1
0110 E603 lda 3,X
0112 A40F and #15
0114 2706 beq X4
0116 X3:
0116 3700 asr *__r0
0118 3600 ror *__r1
011A 4BFA dbnza X3
011C X4:
011C B600 lda *__r1
011E A8FF eor #-1
0120 B700 sta *__r1
0122 B600 lda *__r0
0124 A800 eor #0
0126 4E0000 mov *__r1,0
0129 ; for(lk=0;lk<512;lk++)
0129 6F07 clr 7,X
012B 6F06 clr 6,X
012D L34:
012D CD05EF jsr _Delay1000
0130 95 tsx
0131 L35:
0131 E607 lda 7,X
0133 AB01 add #1
0135 E707 sta 7,X
0137 E606 lda 6,X
0139 A900 adc #0
013B E706 sta 6,X
013D E607 lda 7,X
013F B700 sta *__r1
0141 E606 lda 6,X
0143 B700 sta *__r0
0145 5500 ldhx *__r0
0147 650200 cphx #512
014A 95 tsx
014B 91E0 blt L34
014D ; Delay1000();
014D ; }
014D L32:
014D L29:
014D E603 lda 3,X
014F AB01 add #1
0151 E703 sta 3,X
0153 E602 lda 2,X
0155 A900 adc #0
0157 E702 sta 2,X
0159 E603 lda 3,X
015B B700 sta *__r1
015D E602 lda 2,X
015F B700 sta *__r0
0161 5500 ldhx *__r0
0163 650008 cphx #8
0166 95 tsx
0167 919E blt L28
0169 ; }
0169 ; light_a=0xff;
0169 A6FF lda #-1
016B B700 sta 0
016D ;
016D ; }
016D CC05E9 jmp L8
0170 L7:
0170 ; //8个LED中只有2个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
0170 ; else if(SerialBuff[0]=='2')
0170 B600 lda *_SerialBuff
0172 A132 cmp #50
0174 2703 beq X20
0176 CC02AA jmp L38
0179 X20:
0179 ; { SCISendN(10,"LED效果2 ");
0179 45001F ldhx #L40
017C 89 pshx
017D 8B pshh
017E A60A lda #10
0180 87 psha
0181 CD0000 jsr _SCISendN
0184 A703 ais #3
0186 95 tsx
0187 ; light_a=0xff;
0187 A6FF lda #-1
0189 B700 sta 0
018B ; for(lk=0;lk<512;lk++)
018B 6F07 clr 7,X
018D 6F06 clr 6,X
018F L41:
018F CD05EF jsr _Delay1000
0192 95 tsx
0193 L42:
0193 E607 lda 7,X
0195 AB01 add #1
0197 E707 sta 7,X
0199 E606 lda 6,X
019B A900 adc #0
019D E706 sta 6,X
019F E607 lda 7,X
01A1 B700 sta *__r1
01A3 E606 lda 6,X
01A5 B700 sta *__r0
01A7 5500 ldhx *__r0
01A9 650200 cphx #512
01AC 95 tsx
01AD 91E0 blt L41
01AF ; Delay1000();
01AF ; for(i=0;i<8;i++)
01AF 6F03 clr 3,X
01B1 6F02 clr 2,X
01B3 L45:
01B3 ; {if((ReSendStatusR & (1<<ReTestBit))==0)
01B3 0A1643 brset #5,0x16,L49
01B6 ; {
01B6 ; light_a=(0xff)^(3<<i);
01B6 6E0000 mov #0,*__r0
01B9 6E0300 mov #3,*__r1
01BC E603 lda 3,X
01BE A40F and #15
01C0 2706 beq X6
01C2 X5:
01C2 3800 lsl *__r1
01C4 3900 rol *__r0
01C6 4BFA dbnza X5
01C8 X6:
01C8 B600 lda *__r1
01CA A8FF eor #-1
01CC B700 sta *__r1
01CE B600 lda *__r0
01D0 A800 eor #0
01D2 4E0000 mov *__r1,0
01D5 ; for(lk=0;lk<512;lk++)
01D5 6F07 clr 7,X
01D7 6F06 clr 6,X
01D9 L51:
01D9 CD05EF jsr _Delay1000
01DC 95 tsx
01DD L52:
01DD E607 lda 7,X
01DF AB01 add #1
01E1 E707 sta 7,X
01E3 E606 lda 6,X
01E5 A900 adc #0
01E7 E706 sta 6,X
01E9 E607 lda 7,X
01EB B700 sta *__r1
01ED E606 lda 6,X
01EF B700 sta *__r0
01F1 5500 ldhx *__r0
01F3 650200 cphx #512
01F6 95 tsx
01F7 91E0 blt L51
01F9 ; Delay1000();
01F9 ; }
01F9 L49:
01F9 L46:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -