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

📄 8ledjianbian(dingshi).lst

📁 义隆单片机控制8个LED的渐明渐暗
💻 LST
📖 第 1 页 / 共 3 页
字号:
     1                     ; ===========================================
     2                     ;      中断方式实现内部TCC功能
     3                     ;      晶振=4MHZ,指令周期为4个时钟
     4                     ;      2008年10月30日;8个灯的流水渐灭 
     5                     ;============================================
     6                     ;--------------------------------------------------
     7                     ;               系统变量
     8                     ;-------------------------------------------------------
     9       0001          tcc           ==      0x01        ; TCC计数器
    10       0003          psw           ==      0x03        ; 状态寄存器
    11       0005          port5         ==      0x05        ; PORT5端口
    12       0005          ioc5          ==      0x05        ; port5控制端口
    13       0006          port6         ==      0x06        ; port6端口
    14       0006          ioc6          ==      0x06        ; port6控制端口
    15       000B          iocb          ==      0x0b        ; 设置下拉控制器
    16       000E          IOCE          ==      0x0E        ; WDT控制寄存器
    17       000F          IOCF          ==      0x0F        ; 中断控制寄存器
    18       000F          ISR           ==      0x0F        ; 中断状态寄存器
    19                     ;---------------------------------------------------------------------
    20                                    ;定义变量
    21                     ;---------------------------------------------------------------------
    22       0010          a_buf         ==      0x10        ; 保存中断前A的值
    23       0011          count_gu      ==      0x11        ; 固定计数器
    24       0012          count_bian    ==      0x12        ; 可变计数器
    25       0013          temp3_75      ==      0x13        ; 最暗比较器
    26       0014          temp2_50      ==      0x14        ; 较暗比较器
    27       0015          temp1_25      ==      0x15        ; 次暗比较器
    28       0016          temp0_0       ==      0x16        ; 最亮比较器
    29       0019          count         ==      0x19        ; 分配计数器
    30       001A          year          ==      0x1a        ; 年龄,用在按键扫描中
    31       001B          flag          ==      0x1b        ; 0位为连击标志位,1位为响应标志位
    32       001C          time          ==      0x1c        ; 时间变换1
    33       001D          time1         ==      0x1d        ; 时间变换2
    34       001E          time0         ==      0x1e        ; 时间中间量
    35       0000          c             ==      0           ; 进位标志位
    36       0002          Z             ==      2           ; 为0标志位
    37                     ;----------------------------程序入口地址------------------------------;
    38                                   org     0x00
    39 00000 141A                        jmp     start             ; 开始程序入口
    40                                   org     0x08              ; 中断入口地址
    41                     ;----------------------------------------------------------------------;
    42 00008               tcc_int:
    43 00008 0050                        mov     a_buf, a          ; 保存A的值
    44 00009 18EA                        mov     a,@0xea           ; TCC计数初值
    45 0000A 0041                        mov     tcc,a
    46 0000B 18FE                        mov     a, @0xfe        
    47 0000C 02CF                        and     isr, a            ; 清中断标志位
    48                     ;----------------------------------------------------------------------- 
    49 0000D 1046                        call    gu_loop           ; 调用固定计数子程序
    50                                       
    51 0000E 05DD                        djz     time1
    52 0000F 1418                        jmp     tcc_out
    53 00010 041E                        mov     a,time0
    54 00011 005D                        mov     time1,a           
    55 00012 11B1                        call    bian_loop         ; 调用可变计数子程序
    56                                 
    57 00013 05DC                        djz     time
    58 00014 1418                        jmp     tcc_out
    59 00015 1828                        mov     a,@40
    60 00016 005C                        mov     time,a 
    61                               
    62 00017 11CA                        call    key_scan          ; 调用按键扫描       
    63                                  
    64                     ;----------------------------------------------------------------------
    65 00018               tcc_out:
    66 00018 0410                        mov     a, a_buf           ; 恢复A的值
    67 00019 0013                        reti                       ; 中断返回
    68                     ;---------------------主程序-----------------------------------------------;
    69 0001A               start:
    70 0001A 1880                        mov     a, @0x80
    71                                   
    72 0001B 000E                        iow     ioce               ; 关闭看门狗
    73                     ;---------------------设置IO口--------------------------------------------
    74 0001C 0080                        clra       
    75 0001D 0005                        iow     ioc5               ; Port5为输出口
    76 0001E 180A                        mov     a,@0x0a            ; p61为输入口
    77 0001F 0006                        iow     ioc6               ; 其余为输出口
    78 00020 18DF                        mov     a,@0xdf            ; p61设置下拉电阻
    79 00021 000B                        iow     iocb  
    80                     ;------------------赋初值-------------------------------------------------;
    81 00022 184B                        mov     a,@75              
    82 00023 0392                        add     a,count_bian
    83 00024 0053                        mov     temp3_75,a         ;最暗计数器
    84 00025 1832                        mov     a,@50
    85 00026 0392                        add     a,count_bian
    86 00027 0054                        mov     temp2_50,a         ;较暗计数器
    87 00028 1819                        mov     a,@25
    88 00029 0392                        add     a,count_bian
    89 0002A 0055                        mov     temp1_25,a         ;次暗计数器
    90 0002B 1800                        mov     a,@0
    91 0002C 0392                        add     a,count_bian
    92 0002D 0056                        mov     temp0_0,a          ;最亮计数器
    93                     ;--------------------------------------------------------------------------
    94 0002E 1828                        mov     a,@40
    95 0002F 005C                        mov     time,a
    96 00030 041E                        mov     a,time0
    97 00031 005D                        mov     time1,a
    98                     ;-------------------------------------------------------------------------
    99 00032 00DA                        clr     year               ;年龄,决定进入连击时的等待时间和连击的速度;
   100 00033 00DB                        clr     flag
   101 00034 00D9                        clr     count
   102 00035 00D1                        clr     count_gu
   103 00036 00D2                        clr     count_bian
   104 00037 180F                        mov     a,@0x0f
   105 00038 0245                        or      port5,a            ;p5和p6的LED灭
   106 00039 18F0                        mov     a,@0xf0
   107 0003A 0246                        or      port6,a
   108 0003B 18FF                        mov     a,@255
   109 0003C 005E                        mov     time0,a
   110                     ;----------------------------------------------------------------
   111 0003D 18D0                        mov     a, @0b11010000           ; 保留不需要设置的状态位
   112 0003E 1900                        or      a, @0b00000000           ; 预除数2
   113 0003F 0002                        contw
   114 00040 1801                        mov     a, @0x01                 ; 允许计数器中断
   115 00041 000F                        iow     iocf
   116 00042 0010                        eni                              ; 开中断
   117                     ;----------------------等待中断----------------------------------------------;
   118 00043               main:
   119 00043 0000                        nop
   120 00044 0000                        nop
   121 00045 1443                        jmp     main
   122                     ;------------------------------------------------------------------------------
   123                                      ;固定计数子程序
   124                                      ;可以在此改变IO口的状态,50us-5ms,100等份
   125                     ;-----------------------------------------------------------------------------
   126                     ;=========================第一部分===========================================
   127 00046               gu_loop:
   128 00046 0551                        inc     count_gu
   129 00047 18AF                        mov     a,@0xaf
   130 00048 0311                        xor     a,count_gu       ; 是否等于100
   131 00049 0E83                        jbs     psw,z
   132 0004A 1451                        jmp     gu_next          ; 否,返回
   133 0004B 00D1                        clr     count_gu
   134 0004C 180F                        mov     a,@0x0f          ; P5置1,灯灭
   135 0004D 0245                        or      port5,a
   136 0004E 18F0                        mov     a,@0xf0          ; P6口置1,灯灭
   137 0004F 0246                        or      port6,a
   138 00050 0012                        ret
   139 00051               gu_next:                               ; 第一灯最暗
   140 00051 0413                        mov     a,temp3_75     
   141 00052 0111                        sub     a,count_gu
   142 00053 0E03                        jbs     psw,c
   143 00054 14A9                        jmp     gu_next1
   144 00055 0080                        clra
   145 00056 0319                        xor     a,count
   146 00057 0E83                        jbs     psw,z
   147 00058 145B                        jmp     disp_next
   148 00059 0805                        bc      port5,0 
   149 0005A 0012                        ret 
   150 0005B               disp_next:                             ; 第二灯最暗
   151 0005B 1801                        mov     a,@1
   152 0005C 0319                        xor     a,count
   153 0005D 0E83                        jbs     psw,z
   154 0005E 1461                        jmp     disp_next1
   155 0005F 0845                        bc      port5,1
   156 00060 0012                        ret                      ; 第三灯最暗
   157 00061               disp_next1:
   158 00061 1802                        mov     a,@2
   159 00062 0319                        xor     a,count
   160 00063 0E83                        jbs     psw,z
   161 00064 1467                        jmp     disp_next2
   162 00065 0885                        bc      port5,2
   163 00066 0012                        ret
   164 00067               disp_next2:                            ; 第四灯最暗
   165 00067 1803                        mov     a,@3
   166 00068 0319                        xor     a,count
   167 00069 0E83                        jbs     psw,z
   168 0006A 146D                        jmp     disp_next3
   169 0006B 08C5                        bc      port5,3
   170 0006C 0012                        ret
   171 0006D               disp_next3:                            ; 第五灯最暗
   172 0006D 1804                        mov     a,@4
   173 0006E 0319                        xor     a,count
   174 0006F 0E83                        jbs     psw,z
   175 00070 1473                        jmp     disp_next4
   176 00071 0906                        bc      port6,4
   177 00072 0012                        ret
   178 00073               disp_next4:                            ; 第六灯最暗
   179 00073 1805                        mov     a,@5
   180 00074 0319                        xor     a,count
   181 00075 0E83                        jbs     psw,z
   182 00076 1479                        jmp     disp_next5
   183 00077 0946                        bc      port6,5
   184 00078 0012                        ret
   185 00079               disp_next5:                            ; 第七灯最暗
   186 00079 1806                        mov     a,@6
   187 0007A 0319                        xor     a,count
   188 0007B 0E83                        jbs     psw,z
   189 0007C 147F                        jmp     disp_next6
   190 0007D 0986                        bc      port6,6
   191 0007E 0012                        ret
   192 0007F               disp_next6:                             ; 第八灯最暗
   193 0007F 1807                        mov     a,@7
   194 00080 0319                        xor     a,count
   195 00081 0E83                        jbs     psw,z
   196 00082 1485                        jmp     disp_next7
   197 00083 09C6                        bc      port6,7
   198 00084 0012                        ret
   199 00085               disp_next7:                             ; 第七灯最暗
   200 00085 1808                        mov     a,@8
   201 00086 0319                        xor     a,count
   202 00087 0E83                        jbs     psw,z
   203 00088 148B                        jmp     disp_next8

⌨️ 快捷键说明

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