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

📄 shuma-yanshi.lst

📁 义隆单片机控制8个LED的渐明渐暗
💻 LST
字号:
     1                     ; ===========================================
     2                     ;中断方式实现内部TCC功能
     3                     ;晶振=4MHZ,指令周期为4个时钟 
     4                     ;============================================
     5                     ;--------------------------------------------------------------
     6                     ;              定义变量
     7                     ;--------------------------------------------------------------
     8       0000          r0          ==      0x00
     9       0002          pc          ==      0x02
    10       0003          status      ==      0x03        ; 状态寄存器
    11       0004          r4          ==      0x04     
    12       0005          PORT5       ==      0x05        ; PORT5端口
    13       0005          ioc5        ==      0x05
    14       0006          port6       ==      0x06        ;PORT6端口
    15       0006          ioc6        ==      0x06
    16       000B          iocb        ==      0x0b        ;设置下拉端口
    17       000E          IOCE        ==      0x0E        ; WDT控制寄存器
    18                     ;-------------------------------------------------------------------
    19       0012          scancnt     ==      0x12
    20       0013          scanmap     ==      0x13
    21       0014          count       ==      0x14
    22       0015          dispbuf     ==      0x15
    23       0016          dispbuf1    ==      0x16
    24       0017          year        ==      0x17
    25       0018          flag_lian   ==      0x18
    26       0019          flag_ying   ==      0x19
    27       001A          r_x1        ==      0x1a
    28       001B          r_x2        ==      0x1b
    29       0002          z           ==      2
    30       0000          c           ==      0
    31                     ;----------------------------程序入口地址-----------------------------------;
    32                             ORG     0x00
    33 00000 146A                  JMP     tcc_start
    34                             org     0x10
    35                     ;--------------------------------------------------------------------------
    36                                           ;显示处理子程序
    37                     ;----------------------------------------------------------------------------
    38 00010               disp_chuli:
    39 00010 180F                  mov     a,@0x0f
    40 00011 0294                  and     a,count        ;保留低四位
    41 00012 0055                  mov     dispbuf,a
    42 00013 0714                  swapa   count          ;高四位和低四位转换
    43 00014 1A0F                  and     a,@0x0f
    44 00015 0056                  mov     dispbuf1,a     ;保留高四位
    45 00016 0012                  ret
    46                     ;-------------------------------------------------------------------------
    47                                         ;LED显示子程序
    48                     ;-------------------------------------------------------------------------
    49 00017               led_disp:
    50 00017 0A03                  bs      status,c       ;状态位置1
    51 00018 06D3                  rlc     scanmap        ;位选左移
    52 00019 0552                  inc     scancnt        ;buf寄存器加一
    53 0001A 0412                  mov     a,scancnt
    54 0001B 1B02                  xor     a,@2           ;是否等于2
    55 0001C 0E83                  jbs     status,z
    56 0001D 1421                  jmp     disp_next      ;否,转到disp_next
    57 0001E 00D2                  clr     scancnt        ;是,清0
    58 0001F 18FE                  mov     a,@0b11111110
    59 00020 0053                  mov     scanmap,a      ;为选重新赋位
    60 00021               disp_next:
    61 00021 0412                  mov     a,scancnt
    62 00022 1F15                  add     a,@dispbuf     ;选择寄存器
    63 00023 0044                  mov     r4,a           ;把寄存器的地址赋予R4
    64 00024 0400                  mov     a,r0           ;通过间接寄存器把R4对应的地址赋予A
    65 00025 1055                  call    led_table      ;调用显示字符
    66 00026 0046                  mov     port6,a        ;把显示的字符赋给P6
    67 00027 0413                  mov     a,scanmap      
    68 00028 0045                  mov     port5,a        ;把位选赋给P5
    69 00029 0012                  ret
    70                     ;-----------------------------------------------------------------------
    71                                         ;按键扫描子程序
    72                     ;----------------------------------------------------------------------
    73 0002A               key_scan:
    74 0002A 0405                  mov    a,port5
    75 0002B 0557                  inc    year
    76 0002C 1A04                  and    a,@0x04
    77 0002D 1B04                  xor    a,@0x04
    78 0002E 0E83                  jbs    status,z
    79 0002F 1437                  jmp    key_next
    80 00030 0C18                  jbc    flag_lian,0
    81 00031 143B                  jmp    key_lianjia
    82 00032 0C19                  jbc    flag_ying,0
    83 00033 1442                  jmp    key_next1
    84 00034 104A                  call   disp_add
    85 00035 0A19                  bs     flag_ying,0
    86 00036 0012                  ret
    87 00037               key_next:
    88 00037 00D7                  clr    year
    89 00038 0819                  bc     flag_ying,0
    90 00039 0818                  bc     flag_lian,0
    91 0003A 0012                  ret
    92 0003B               key_lianjia:
    93 0003B 1805                  mov    a,@0x05
    94 0003C 0117                  sub    a,year
    95 0003D 0E03                  jbs    status,c
    96 0003E 0012                  ret
    97 0003F 00D7                  clr    year
    98 00040 104A                  call   disp_add
    99 00041 0012                  ret
   100 00042               key_next1:
   101 00042 1864                  mov   a,@100
   102 00043 0117                  sub   a,year
   103 00044 0E03                  jbs   status,c
   104 00045 0012                  ret
   105 00046 00D7                  clr   year
   106 00047 0A18                  bs    flag_lian,0
   107 00048 0012                  ret  
   108 00049               key_out:
   109 00049 0012                  ret
   110                     ;----------------------------------------------------------------------------
   111                                     ;字符增加
   112                     ;-------------------------------------------------------------------------
   113 0004A               disp_add:
   114 0004A 0414                  mov     a,count        ;是,count增加1
   115 0004B 1F01                  add     a,@1            
   116 0004C 0001                  daa                    ;转换成BCD码
   117 0004D 0054                  mov     count,a
   118 0004E 1860                  mov     a,@0x60        ;100到了吗
   119 0004F 0314                  xor     a,count
   120 00050 0E83                  jbs     status,z
   121 00051 1453                  jmp     disp_add_next      ;没到,调用disp_chuli
   122 00052 00D4                  clr     count          ;到了,清0
   123 00053               disp_add_next:
   124 00053 1010                  call    disp_chuli
   125 00054 0012                  ret
   126                     ;-----------------------------------------------------------------------------
   127                                              ;字符显示子程序
   128                     ;-----------------------------------------------------------------------------
   129 00055               led_table:
   130 00055 03C2                  add     pc,a
   131                             
   132 00056 1C77                  retl    @0x77       ;0
   133 00057 1C06                  retl    @0x06       ;1
   134 00058 1CB3                  retl    @0xb3       ;2
   135 00059 1C97                  retl    @0x97       ;3
   136 0005A 1CC6                  retl    @0xc6       ;4
   137 0005B 1CD5                  retl    @0xd5       ;5
   138 0005C 1CF5                  retl    @0xf5       ;6
   139 0005D 1C07                  retl    @0x07       ;7
   140 0005E 1CF7                  retl    @0xf7       ;8
   141 0005F 1CD7                  retl    @0xd7       ;9
   142                     ;-------------------------------------------------------------------
   143                                       ;延时10ms子程序
   144                     ;------------------------------------------------------------------
   145 00060               delay:
   146 00060 180A                  mov     a,@10
   147 00061 005A                  mov     r_x1,a
   148 00062                 d1:
   149 00062 18FA                  mov     a,@250
   150 00063 005B                  mov     r_x2,a
   151 00064                 d2:
   152 00064 0000                  nop
   153 00065 05DB                  djz     r_x2
   154 00066 1464                  jmp     d2
   155 00067 05DA                  djz     r_x1
   156 00068 1462                  jmp     d1
   157 00069 0012                  ret
   158                     ;---------------------------------------------------------------------
   159                                                ;主程序
   160                     ;---------------------------------------------------------------------
   161 0006A               tcc_start:
   162 0006A 1800                  MOV     A, @0x00
   163 0006B 000E                  IOW     IOCE               ; 关闭看门狗
   164 0006C 1804                  mov     a,@0x04            ;p50,p51位输出口
   165 0006D 0005                  IOW     ioc5              ;p52位按键输入口
   166 0006E 1808                  mov     a,@0x08           ;P63位输入口
   167 0006F 0006                  iow     ioc6              ;其他口位输入口
   168 00070 18FB                  mov     a,@0xfb
   169 00071 000B                  iow     iocb
   170 00072 18D0                  mov     A, @0b11010000           ; 保留不需要设置的状态位
   171 00073 0002                  CONTW
   172                     ;----------------赋初值------------------------------------------------ 
   173 00074 00D7                  clr     year
   174 00075 0818                  bc      flag_lian,0
   175 00076 0819                  bc      flag_ying,0  
   176                     ;-------------------------------------------------------------------      
   177 00077 18FE                  mov     a,@0b11111110
   178 00078 0053                  mov     scanmap,a
   179 00079 1800                  mov     a,@0x00
   180 0007A 0052                  mov     scancnt,a
   181 0007B 0054                  mov     count,a
   182 0007C 1010                  call    disp_chuli
   183                     
   184 0007D               main:
   185 0007D 1060                  call    delay
   186 0007E 1017                  call   led_disp
   187 0007F 102A                  call   key_scan
   188 00080 147D                  jmp     main
   189                     ;----------------------------------------------------------------------------
   190                             END
  0 Error(s), 0 Warning(s), 0 User Message(s)

⌨️ 快捷键说明

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