⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 要用到开发工具SD-H08
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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           ; #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;
 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&=~(0x03);
 0004 B605              lda 0x5
 0006 A4FC              and #-4
 0008 B705              sta 0x5
 000A CC024A            jmp L3
 000D           L2:
 000D           ;      while(1)
 000D           ;   		{
 000D           ;   //8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
 000D           ;      		if((light_b&0x3)==0x0)
 000D B601              lda 0x1
 000F A503              bit #3
 0011 2703              beq X17
 0013 CC00A1            jmp L5
 0016           X17:
 0016           ;      			{
 0016           ;      				light_a|=0xff;
 0016 A6FF              lda #-1
 0018 B700              sta 0
 001A           ;                               for(i=0;i<=8;i++)
 001A 3F02              clr *_i
 001C 202D              bra L10
 001E           L7:
 001E           ;      				{
 001E           ;      					light_a&=~(1<<light_pin);
 001E 6E0100            mov #1,*__r0
 0021 B602              lda *_i
 0023 A407              and #7
 0025 2704              beq X2
 0027           X1:
 0027 3800              lsl *__r0
 0029 4BFC              dbnza X1
 002B           X2:
 002B 3300              com *__r0
 002D B600              lda 0
 002F B400              and *__r0
 0031 B700              sta 0
 0033           ;                                       for(k=0;k<512;k++)             //延时0.25秒
 0033 3F01              clr *_k+1
 0035 3F00              clr *_k
 0037           L11:
 0037 CD024E            jsr _Delay1000
 003A 95                tsx
 003B           L12:
 003B 5500              ldhx *_k
 003D AF01              aix #1
 003F 3500              sthx *_k
 0041 5500              ldhx *_k
 0043 650200            cphx #512
 0046 95                tsx
 0047 91EE              blt L11
 0049           L8:
 0049 3C02              inc *_i
 004B           L10:
 004B B602              lda *_i
 004D A108              cmp #8
 004F 23CD              bls L7
 0051           ;                                        Delay1000();
 0051           ;                               }
 0051           ;                               for(i=0;i<=8;i++)
 0051 3F02              clr *_i
 0053 2043              bra L18
 0055           L15:
 0055           ;      				{
 0055           ;      					light_a&=~(0x80>>light_pin);
 0055 B602              lda *_i
 0057 6E0000            mov #0,*__r2
 005A 6E8000            mov #-128,*__r3
 005D A40F              and #15
 005F 2706              beq X4
 0061           X3:
 0061 3700              asr *__r2
 0063 3600              ror *__r3
 0065 4BFA              dbnza X3
 0067           X4:
 0067 4E0000            mov *__r2,*__r0
 006A 4E0000            mov *__r3,*__r1
 006D 3300              com *__r1
 006F 3300              com *__r0
 0071 3F00              clr *__r2
 0073 B600              lda 0
 0075 B400              and *__r1
 0077 B700              sta *__r1
 0079 B600              lda *__r2
 007B B400              and *__r0
 007D 4E0000            mov *__r1,0
 0080           ;                                       for(k=0;k<512;k++)
 0080 3F01              clr *_k+1
 0082 3F00              clr *_k
 0084           L19:
 0084 CD024E            jsr _Delay1000
 0087 95                tsx
 0088           L20:
 0088 5500              ldhx *_k
 008A AF01              aix #1
 008C 3500              sthx *_k
 008E 5500              ldhx *_k
 0090 650200            cphx #512
 0093 95                tsx
 0094 91EE              blt L19
 0096           L16:
 0096 3C02              inc *_i
 0098           L18:
 0098 B602              lda *_i
 009A A108              cmp #8
 009C 23B7              bls L15
 009E           ;                                       Delay1000();
 009E           ;                               }
 009E           ;                       }
 009E CC024A            jmp L6
 00A1           L5:
 00A1           ;  // 8个LED中只有两个连在一起的灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。   		
 00A1           ;      		
 00A1           ;      		else if((light_b&0x3)==0x01)
 00A1 B601              lda 0x1
 00A3 A403              and #3
 00A5 A101              cmp #1
 00A7 2703              beq X18
 00A9 CC0121            jmp L23
 00AC           X18:
 00AC           ;      			{
 00AC           ;      				light_a|=0xff;
 00AC A6FF              lda #-1
 00AE B700              sta 0
 00B0           ;                               for(i=0;i<=8;i++)
 00B0 3F02              clr *_i
 00B2 202D              bra L28
 00B4           L25:
 00B4           ;      				{
 00B4           ;      					light_a&=~(3<<light_pin);
 00B4 6E0300            mov #3,*__r0
 00B7 B602              lda *_i
 00B9 A407              and #7
 00BB 2704              beq X6
 00BD           X5:
 00BD 3800              lsl *__r0
 00BF 4BFC              dbnza X5
 00C1           X6:
 00C1 3300              com *__r0
 00C3 B600              lda 0
 00C5 B400              and *__r0
 00C7 B700              sta 0
 00C9           ;                                       for(k=0;k<512;k++)             //延时0.25秒
 00C9 3F01              clr *_k+1
 00CB 3F00              clr *_k
 00CD           L29:
 00CD CD024E            jsr _Delay1000
 00D0 95                tsx
 00D1           L30:
 00D1 5500              ldhx *_k
 00D3 AF01              aix #1
 00D5 3500              sthx *_k
 00D7 5500              ldhx *_k
 00D9 650200            cphx #512
 00DC 95                tsx
 00DD 91EE              blt L29
 00DF           L26:
 00DF 3C02              inc *_i
 00E1           L28:
 00E1 B602              lda *_i
 00E3 A108              cmp #8
 00E5 23CD              bls L25
 00E7           ;                                        Delay1000();
 00E7           ;                               }
 00E7           ;                               for(i=0;i<=8;i++)
 00E7 3F02              clr *_i
 00E9 202D              bra L36
 00EB           L33:
 00EB           ;      				{
 00EB           ;      					light_a&=~(0x12>>light_pin);
 00EB 6E1200            mov #18,*__r0
 00EE B602              lda *_i
 00F0 A407              and #7
 00F2 2704              beq X8
 00F4           X7:
 00F4 3700              asr *__r0
 00F6 4BFC              dbnza X7
 00F8           X8:
 00F8 3300              com *__r0
 00FA B600              lda 0
 00FC B400              and *__r0
 00FE B700              sta 0
 0100           ;                                       for(k=0;k<512;k++)
 0100 3F01              clr *_k+1
 0102 3F00              clr *_k
 0104           L37:
 0104 CD024E            jsr _Delay1000
 0107 95                tsx
 0108           L38:
 0108 5500              ldhx *_k
 010A AF01              aix #1
 010C 3500              sthx *_k
 010E 5500              ldhx *_k
 0110 650200            cphx #512
 0113 95                tsx
 0114 91EE              blt L37
 0116           L34:
 0116 3C02              inc *_i
 0118           L36:
 0118 B602              lda *_i
 011A A108              cmp #8
 011C 23CD              bls L33
 011E           ;                                       Delay1000();
 011E           ;                               }
 011E           ;                       }
 011E CC024A            jmp L24
 0121           L23:
 0121           ;  // 8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约8秒    			
 0121           ;  			else if((light_b&0x3)==0x02)
 0121 B601              lda 0x1
 0123 A403              and #3
 0125 A102              cmp #2
 0127 2703              beq X19

⌨️ 快捷键说明

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