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 + -
显示快捷键?