main.lis
来自「要用到开发工具SD-H08」· LIS 代码 · 共 1,026 行 · 第 1/3 页
LIS
1,026 行
.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 CC05C9 jmp L3
0010 L2:
0010 ; //调串行口初始化子程序
0010 ;
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 CC05C9 jmp L5
002B X17:
002B E603 lda 3,X
002D 2703 beq X18
002F CC05C9 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 CC016A 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 CD05CF 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 ; {
0079 ; light_a=(0xff)^(1<<i);
0079 6E0000 mov #0,*__r0
007C 6E0100 mov #1,*__r1
007F E603 lda 3,X
0081 A40F and #15
0083 2706 beq X2
0085 X1:
0085 3800 lsl *__r1
0087 3900 rol *__r0
0089 4BFA dbnza X1
008B X2:
008B B600 lda *__r1
008D A8FF eor #-1
008F B700 sta *__r1
0091 B600 lda *__r0
0093 A800 eor #0
0095 4E0000 mov *__r1,0
0098 ; for(lk=0;lk<512;lk++)
0098 6F07 clr 7,X
009A 6F06 clr 6,X
009C L18:
009C CD05CF jsr _Delay1000
009F 95 tsx
00A0 L19:
00A0 E607 lda 7,X
00A2 AB01 add #1
00A4 E707 sta 7,X
00A6 E606 lda 6,X
00A8 A900 adc #0
00AA E706 sta 6,X
00AC E607 lda 7,X
00AE B700 sta *__r1
00B0 E606 lda 6,X
00B2 B700 sta *__r0
00B4 5500 ldhx *__r0
00B6 650200 cphx #512
00B9 95 tsx
00BA 91E0 blt L18
00BC L15:
00BC E603 lda 3,X
00BE AB01 add #1
00C0 E703 sta 3,X
00C2 E602 lda 2,X
00C4 A900 adc #0
00C6 E702 sta 2,X
00C8 E603 lda 3,X
00CA B700 sta *__r1
00CC E602 lda 2,X
00CE B700 sta *__r0
00D0 5500 ldhx *__r0
00D2 650008 cphx #8
00D5 95 tsx
00D6 91A1 blt L14
00D8 ; Delay1000();
00D8 ; }
00D8 ; light_a=0xff;
00D8 A6FF lda #-1
00DA B700 sta 0
00DC ; for(lk=0;lk<512;lk++)
00DC 6F07 clr 7,X
00DE 6F06 clr 6,X
00E0 L22:
00E0 CD05CF jsr _Delay1000
00E3 95 tsx
00E4 L23:
00E4 E607 lda 7,X
00E6 AB01 add #1
00E8 E707 sta 7,X
00EA E606 lda 6,X
00EC A900 adc #0
00EE E706 sta 6,X
00F0 E607 lda 7,X
00F2 B700 sta *__r1
00F4 E606 lda 6,X
00F6 B700 sta *__r0
00F8 5500 ldhx *__r0
00FA 650200 cphx #512
00FD 95 tsx
00FE 91E0 blt L22
0100 ; Delay1000();
0100 ; for(i=0;i<8;i++)
0100 6F03 clr 3,X
0102 6F02 clr 2,X
0104 L26:
0104 ; {
0104 ; light_a=(0xff)^(0x80>>i);
0104 6E0000 mov #0,*__r0
0107 6E8000 mov #-128,*__r1
010A E603 lda 3,X
010C A40F and #15
010E 2706 beq X4
0110 X3:
0110 3700 asr *__r0
0112 3600 ror *__r1
0114 4BFA dbnza X3
0116 X4:
0116 B600 lda *__r1
0118 A8FF eor #-1
011A B700 sta *__r1
011C B600 lda *__r0
011E A800 eor #0
0120 4E0000 mov *__r1,0
0123 ; for(lk=0;lk<512;lk++)
0123 6F07 clr 7,X
0125 6F06 clr 6,X
0127 L30:
0127 CD05CF jsr _Delay1000
012A 95 tsx
012B L31:
012B E607 lda 7,X
012D AB01 add #1
012F E707 sta 7,X
0131 E606 lda 6,X
0133 A900 adc #0
0135 E706 sta 6,X
0137 E607 lda 7,X
0139 B700 sta *__r1
013B E606 lda 6,X
013D B700 sta *__r0
013F 5500 ldhx *__r0
0141 650200 cphx #512
0144 95 tsx
0145 91E0 blt L30
0147 L27:
0147 E603 lda 3,X
0149 AB01 add #1
014B E703 sta 3,X
014D E602 lda 2,X
014F A900 adc #0
0151 E702 sta 2,X
0153 E603 lda 3,X
0155 B700 sta *__r1
0157 E602 lda 2,X
0159 B700 sta *__r0
015B 5500 ldhx *__r0
015D 650008 cphx #8
0160 95 tsx
0161 91A1 blt L26
0163 ; Delay1000();
0163 ; }
0163 ; light_a=0xff;
0163 A6FF lda #-1
0165 B700 sta 0
0167 ;
0167 ; }
0167 CC05C9 jmp L8
016A L7:
016A ; //8个LED中只有2个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
016A ; else if(SerialBuff[0]=='2')
016A B600 lda *_SerialBuff
016C A132 cmp #50
016E 2703 beq X20
0170 CC029E jmp L34
0173 X20:
0173 ; { SCISendN(10,"LED效果2 ");
0173 45001F ldhx #L36
0176 89 pshx
0177 8B pshh
0178 A60A lda #10
017A 87 psha
017B CD0000 jsr _SCISendN
017E A703 ais #3
0180 95 tsx
0181 ; light_a=0xff;
0181 A6FF lda #-1
0183 B700 sta 0
0185 ; for(lk=0;lk<512;lk++)
0185 6F07 clr 7,X
0187 6F06 clr 6,X
0189 L37:
0189 CD05CF jsr _Delay1000
018C 95 tsx
018D L38:
018D E607 lda 7,X
018F AB01 add #1
0191 E707 sta 7,X
0193 E606 lda 6,X
0195 A900 adc #0
0197 E706 sta 6,X
0199 E607 lda 7,X
019B B700 sta *__r1
019D E606 lda 6,X
019F B700 sta *__r0
01A1 5500 ldhx *__r0
01A3 650200 cphx #512
01A6 95 tsx
01A7 91E0 blt L37
01A9 ; Delay1000();
01A9 ; for(i=0;i<8;i++)
01A9 6F03 clr 3,X
01AB 6F02 clr 2,X
01AD L41:
01AD ; {
01AD ; light_a=(0xff)^(3<<i);
01AD 6E0000 mov #0,*__r0
01B0 6E0300 mov #3,*__r1
01B3 E603 lda 3,X
01B5 A40F and #15
01B7 2706 beq X6
01B9 X5:
01B9 3800 lsl *__r1
01BB 3900 rol *__r0
01BD 4BFA dbnza X5
01BF X6:
01BF B600 lda *__r1
01C1 A8FF eor #-1
01C3 B700 sta *__r1
01C5 B600 lda *__r0
01C7 A800 eor #0
01C9 4E0000 mov *__r1,0
01CC ; for(lk=0;lk<512;lk++)
01CC 6F07 clr 7,X
01CE 6F06 clr 6,X
01D0 L45:
01D0 CD05CF jsr _Delay1000
01D3 95 tsx
01D4 L46:
01D4 E607 lda 7,X
01D6 AB01 add #1
01D8 E707 sta 7,X
01DA E606 lda 6,X
01DC A900 adc #0
01DE E706 sta 6,X
01E0 E607 lda 7,X
01E2 B700 sta *__r1
01E4 E606 lda 6,X
01E6 B700 sta *__r0
01E8 5500 ldhx *__r0
01EA 650200 cphx #512
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?