main.lis

来自「要用到开发工具SD-H08」· LIS 代码 · 共 590 行 · 第 1/2 页

LIS
590
字号
                        .module main.c
                        .area text
 0000           _main::
 0000           ; /*-----------------------------------------------------*
 0000           ; *工 程 名:Prgframe.prj                                 *
 0000           ; *硬件连接:PTA.1接指示灯                                *
 0000           ; *程序描述:指示灯PTA.1闪烁                              *
 0000           ; *目    的:第一个freescale(Motorola) HC08系列MCU程序框架*
 0000           ; *说    明:提供Motorola MCU的编程框架,供教学入门使用   *
 0000           ; *注    意:如果延时不够长的话,会发觉灯不会闪烁,而是一 *
 0000           ; *         直亮,这是由于人的视觉的引起的。             *
 0000           ; *--------《嵌入式应用技术基础教程》教学实例-----------*/
 0000           ; /*[头文件]*/
 0000           ; /*[???]*/
 0000           ; #include "GP32C.h"                 //映像寄存器地址头文件
 0000           ; /*[指示灯所接引脚定义]*/
 0000           ; #define  light_a     PTA         //灯(Light)接在PTA口
 0000           ; #define  light_ctrla DDRA         //相应的方向寄存器
 0000           ; #define light_b      PTB
 0000           ; #define  light_ctrlb  DDRB
 0000           ; #define  light_pin   i         //灯所在的引脚
 0000           ; /*[全局变量声明]*/
 0000           ; unsigned char i;
 0000           ; int k,z;
 0000           ; /*[延时子函数声明]*/
 0000           ; void Delay1000(void);
 0000           ; /*[主函数]*/
 0000           ; void main()
 0000           ;   {  
 0000           ;      light_ctrla=0xff;
 0000 A6FF              lda #-1
 0002 B704              sta 0x4
 0004           ;      light_ctrlb=0x00;
 0004 3F05              clr 0x5
 0006 CC02BC            jmp L3
 0009           L2:
 0009           ;      while(1)
 0009           ;   		{
 0009           ;   //8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
 0009           ; 			if((light_b&0x03)==0x00)
 0009 B601              lda 0x1
 000B A503              bit #3
 000D 2703              beq X17
 000F CC00B4            jmp L5
 0012           X17:
 0012           ;      			{	for(i=0;i<8;i++)
 0012 3F04              clr *_i
 0014 2030              bra L10
 0016           L7:
 0016           ;      				{if((light_b&0x03)==0x00)
 0016 B601              lda 0x1
 0018 A503              bit #3
 001A 2628              bne L11
 001C           ;                                       {
 001C           ;                                  light_a=~(1<<light_pin);
 001C 6E0100            mov #1,*__r0
 001F B604              lda *_i
 0021 A407              and #7
 0023 2704              beq X2
 0025           X1:
 0025 3800              lsl *__r0
 0027 4BFC              dbnza X1
 0029           X2:
 0029 B600              lda *__r0
 002B 43                coma
 002C B700              sta 0
 002E           ;                                  for(k=0;k<512;k++)             //延时0.25秒
 002E 3F03              clr *_k+1
 0030 3F02              clr *_k
 0032           L13:
 0032 CD02C0            jsr _Delay1000
 0035 95                tsx
 0036           L14:
 0036 5502              ldhx *_k
 0038 AF01              aix #1
 003A 3502              sthx *_k
 003C 5502              ldhx *_k
 003E 650200            cphx #512
 0041 95                tsx
 0042 91EE              blt L13
 0044           ;                                  Delay1000();
 0044           ;                                  }
 0044           L11:
 0044           L8:
 0044 3C04              inc *_i
 0046           L10:
 0046 B604              lda *_i
 0048 A108              cmp #8
 004A 25CA              blo L7
 004C           ;                               }
 004C           ;                                  light_a=0xff;
 004C A6FF              lda #-1
 004E B700              sta 0
 0050           ;                                  for(k=0;k<512;k++)             //延时0.25秒
 0050 3F03              clr *_k+1
 0052 3F02              clr *_k
 0054           L17:
 0054 CD02C0            jsr _Delay1000
 0057 95                tsx
 0058           L18:
 0058 5502              ldhx *_k
 005A AF01              aix #1
 005C 3502              sthx *_k
 005E 5502              ldhx *_k
 0060 650200            cphx #512
 0063 95                tsx
 0064 91EE              blt L17
 0066           ;                                  Delay1000();
 0066           ;                                  Delay1000();
 0066 CD02C0            jsr _Delay1000
 0069 95                tsx
 006A           ;                               for(i=0;i<=8;i++)
 006A 3F04              clr *_i
 006C 203D              bra L24
 006E           L21:
 006E           ;      				{if((light_b&0x03)==0x00)
 006E B601              lda 0x1
 0070 A503              bit #3
 0072 2635              bne L25
 0074           ;                                       {
 0074           ;                                       light_a=~(0x80>>light_pin);
 0074 B604              lda *_i
 0076 6E0000            mov #0,*__r2
 0079 6E8000            mov #-128,*__r3
 007C A40F              and #15
 007E 2706              beq X4
 0080           X3:
 0080 3700              asr *__r2
 0082 3600              ror *__r3
 0084 4BFA              dbnza X3
 0086           X4:
 0086 4E0000            mov *__r2,*__r0
 0089 4E0000            mov *__r3,*__r1
 008C 3300              com *__r1
 008E 3300              com *__r0
 0090 4E0000            mov *__r1,0
 0093           ;                                       for(k=0;k<512;k++)
 0093 3F03              clr *_k+1
 0095 3F02              clr *_k
 0097           L27:
 0097 CD02C0            jsr _Delay1000
 009A 95                tsx
 009B           L28:
 009B 5502              ldhx *_k
 009D AF01              aix #1
 009F 3502              sthx *_k
 00A1 5502              ldhx *_k
 00A3 650200            cphx #512
 00A6 95                tsx
 00A7 91EE              blt L27
 00A9           ;                                       Delay1000();
 00A9           ;                                       }
 00A9           L25:
 00A9           L22:
 00A9 3C04              inc *_i
 00AB           L24:
 00AB B604              lda *_i
 00AD A108              cmp #8
 00AF 23BD              bls L21
 00B1           ;                               }
 00B1           ;                       }
 00B1 CC02BC            jmp L6
 00B4           L5:
 00B4           ;      				
 00B4           ;   //8个LED中只有两个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
 00B4           ; 			else if((light_b&0x03)==0x01)
 00B4 B601              lda 0x1
 00B6 A403              and #3
 00B8 A101              cmp #1
 00BA 2703              beq X18
 00BC CC0161            jmp L31
 00BF           X18:
 00BF           ;      			{	for(i=0;i<8;i++)
 00BF 3F04              clr *_i
 00C1 2032              bra L36
 00C3           L33:
 00C3           ;      				{if((light_b&0x03)==0x01)
 00C3 B601              lda 0x1
 00C5 A403              and #3
 00C7 A101              cmp #1
 00C9 2628              bne L37
 00CB           ;                                       {
 00CB           ;                                       light_a=~(3<<light_pin);
 00CB 6E0300            mov #3,*__r0
 00CE B604              lda *_i
 00D0 A407              and #7
 00D2 2704              beq X6
 00D4           X5:
 00D4 3800              lsl *__r0
 00D6 4BFC              dbnza X5
 00D8           X6:
 00D8 B600              lda *__r0
 00DA 43                coma
 00DB B700              sta 0
 00DD           ;                                       for(k=0;k<512;k++)             //延时0.25秒
 00DD 3F03              clr *_k+1
 00DF 3F02              clr *_k
 00E1           L39:
 00E1 CD02C0            jsr _Delay1000
 00E4 95                tsx
 00E5           L40:
 00E5 5502              ldhx *_k
 00E7 AF01              aix #1
 00E9 3502              sthx *_k
 00EB 5502              ldhx *_k
 00ED 650200            cphx #512
 00F0 95                tsx
 00F1 91EE              blt L39
 00F3           ;                                       Delay1000();
 00F3           ;                                       }
 00F3           L37:
 00F3           L34:
 00F3 3C04              inc *_i
 00F5           L36:
 00F5 B604              lda *_i
 00F7 A108              cmp #8
 00F9 25C8              blo L33
 00FB           ;                               }
 00FB           ;                                   light_a=0xff;
 00FB A6FF              lda #-1
 00FD B700              sta 0
 00FF           ;                                   for(k=0;k<512;k++)             //延时0.25秒
 00FF 3F03              clr *_k+1
 0101 3F02              clr *_k
 0103           L43:
 0103 CD02C0            jsr _Delay1000
 0106 95                tsx
 0107           L44:
 0107 5502              ldhx *_k
 0109 AF01              aix #1
 010B 3502              sthx *_k
 010D 5502              ldhx *_k
 010F 650200            cphx #512
 0112 95                tsx
 0113 91EE              blt L43
 0115           ;                                       Delay1000();
 0115           ;                               for(i=0;i<=8;i++)
 0115 3F04              clr *_i
 0117 203F              bra L50
 0119           L47:
 0119           ;      				{if((light_b&0x03)==0x01)
 0119 B601              lda 0x1
 011B A403              and #3
 011D A101              cmp #1
 011F 2635              bne L51
 0121           ;                                       {
 0121           ;                                       light_a=~(0xc0>>light_pin);
 0121 B604              lda *_i
 0123 6E0000            mov #0,*__r2
 0126 6EC000            mov #-64,*__r3
 0129 A40F              and #15
 012B 2706              beq X8
 012D           X7:
 012D 3700              asr *__r2
 012F 3600              ror *__r3
 0131 4BFA              dbnza X7
 0133           X8:
 0133 4E0000            mov *__r2,*__r0
 0136 4E0000            mov *__r3,*__r1
 0139 3300              com *__r1
 013B 3300              com *__r0
 013D 4E0000            mov *__r1,0
 0140           ;                                       for(k=0;k<512;k++)
 0140 3F03              clr *_k+1
 0142 3F02              clr *_k
 0144           L53:
 0144 CD02C0            jsr _Delay1000
 0147 95                tsx
 0148           L54:
 0148 5502              ldhx *_k
 014A AF01              aix #1
 014C 3502              sthx *_k
 014E 5502              ldhx *_k
 0150 650200            cphx #512
 0153 95                tsx
 0154 91EE              blt L53
 0156           ;                                       Delay1000();
 0156           ;                                       }
 0156           L51:
 0156           L48:
 0156 3C04              inc *_i
 0158           L50:
 0158 B604              lda *_i
 015A A108              cmp #8
 015C 23BB              bls L47
 015E           ;                               }
 015E           ;                       }
 015E CC02BC            jmp L32
 0161           L31:
 0161           ; //8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约8秒。
 0161           ; 			else if((light_b&0x03)==0x02)
 0161 B601              lda 0x1
 0163 A403              and #3
 0165 A102              cmp #2
 0167 2703              beq X19

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?