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

📄 shuangjian(dingshi).lst

📁 义隆单片机控制8个LED的渐明渐暗
💻 LST
字号:
     1                     ; ===========================================
     2                     ;      中断方式实现内部TCC功能
     3                     ;      晶振=4MHZ,指令周期为4个时钟 
     4                     ;============================================
     5                     ;--------------------------------------------------
     6                     ;               系统变量
     7                     ;-------------------------------------------------------
     8       0001          tcc           ==      0x01        ; TCC计数器
     9       0003          psw           ==      0x03        ; 状态寄存器
    10       0005          port5         ==      0x05        ; PORT5端口
    11       0005          ioc5          ==      0x05        ; port5控制端口
    12       000B          iocb          ==      0x0b        ; 设置下拉控制器
    13       000E          IOCE          ==      0x0E        ; WDT控制寄存器
    14       000F          IOCF          ==      0x0F        ; 中断控制寄存器
    15       000F          ISR           ==      0x0F        ; 中断状态寄存器
    16                     ;---------------------------------------------------------------------
    17                                    ;定义变量
    18                     ;---------------------------------------------------------------------
    19       0010          a_buf         ==      0x10        ; 保存中断前A的值
    20       0011          tcc_count     ==      0x11        ; TCC计数器
    21       0012          year          ==      0x12        ; 年龄,用在按键扫描中
    22       0013          flag          ==      0x13        ; 0位为连击标志位,1位为响应标志位
    23       0014          r_key         ==      0x14
    24       00CD          num           ==      205
    25       0000          c             ==      0           ; 进位标志位
    26       0002          Z             ==      2           ; 为0标志位
    27                     ;----------------------------程序入口地址------------------------------;
    28                                   org     0x00
    29 00000 1415                        jmp     start             ; 开始程序入口
    30                                   org     0x08              ; 中断入口地址
    31                     ;----------------------------------------------------------------------;
    32 00008               tcc_int:
    33 00008 0050                        mov     a_buf, a          ; 保存A的值
    34 00009 180E                        mov     a,@0x0e           ; TCC计数初值
    35 0000A 0041                        mov     tcc,a
    36 0000B 18FE                        mov     a, @0xfe        
    37 0000C 02CF                        and     isr, a            ; 清中断标志位
    38                     ;----------------------------------------------------------------------- 
    39 0000D 102A                        call    key_scan
    40 0000E 0551                        inc     tcc_count         ; 每中断一次TCC_Count计数器加1
    41 0000F 0E83                        jbs     psw,z             ; 判断TCC_Count是否溢出
    42 00010 1413                        jmp     tcc_out           ; 没有溢出
    43 00011 18CD                        mov     a,@num
    44 00012 0051                        mov     tcc_count,a
    45                                   ;mov     a,@0x01
    46                                   ;xor     port5,a          ;一秒取反输出(P5.0LED)
    47                     ;------------------------------------------------------------------------
    48                          
    49                     ;----------------------------------------------------------------------
    50 00013               tcc_out:
    51 00013 0410                        mov     a, a_buf           ; 恢复A的值
    52 00014 0013                        reti                       ; 中断返回
    53                     ;---------------------主程序-----------------------------------------------;
    54 00015               start:
    55 00015 1800                        mov     a, @0x00
    56 00016 000E                        iow     ioce               ; 关闭看门狗
    57                     ;---------------------设置IO口--------------------------------------------
    58 00017 1806                        mov     a,@0x06      
    59 00018 0005                        iow     ioc5               ; Port50为输出口,p51,p52位输入口
    60 00019 18F9                        mov     a,@0xf9            ; p61设置下拉电阻
    61 0001A 000B                        iow     iocb  
    62                     ;------------------赋初值-------------------------------------------------;
    63 0001B 18CD                        mov     a,@num
    64 0001C 0051                        mov     tcc_count,a
    65                     ;-------------------------------------------------------------------------
    66 0001D 00D4                        clr     r_key
    67 0001E 00D2                        clr     year
    68 0001F 00D3                        clr     flag
    69 00020 0A05                        bs      port5,0
    70                     ;----------------------------------------------------------------
    71 00021 18D0                        mov     a, @0b11010000           ; 保留不需要设置的状态位
    72 00022 1905                        or      a, @0b00000101           ; 预除数64
    73 00023 0002                        contw
    74 00024 1801                        mov     a, @0x01                 ; 允许计数器中断
    75 00025 000F                        iow     iocf
    76 00026 0010                        eni                              ; 开中断
    77                     ;----------------------等待中断----------------------------------------------;
    78 00027               main:
    79 00027 0000                        nop
    80 00028 0000                        nop
    81 00029               main_out:
    82 00029 1427                        jmp     main
    83 0002A               key_scan:
    84 0002A 0405                        mov    a,port5
    85 0002B 0552                        inc    year
    86 0002C 1A06                        and    a,@0x06
    87 0002D 0054                        mov    r_key,a
    88 0002E 0E83                        jbs    psw,z
    89 0002F 143A                        jmp    key_in1
    90 00030 1442                        jmp    key_next
    91 00031               key_in:
    92 00031 0414                        mov    a,r_key
    93 00032 1B02                        xor    a,@0x02
    94 00033 0E83                        jbs    psw,z
    95 00034 0012                        ret
    96 00035 0C53                        jbc    flag,1
    97 00036 0012                        ret
    98 00037 0A05                        bs     port5,0
    99 00038 0A53                        bs     flag,1
   100 00039 0012                        ret
   101 0003A               key_in1:
   102 0003A 1B04                        xor    a,@0x04
   103 0003B 0E83                        jbs    psw,z
   104 0003C 1431                        jmp    key_in
   105 0003D 0C93                        jbc    flag,2
   106 0003E 0012                        ret
   107 0003F 0805                        bc     port5,0
   108 00040 0A93                        bs     flag,2
   109 00041 0012                        ret
   110 00042               key_next:
   111 00042 00D2                        clr    year
   112 00043 00D3                        clr     flag
   113 00044 0012                        ret
   114                     
   115                     
   116                                   END
  0 Error(s), 0 Warning(s), 0 User Message(s)

⌨️ 快捷键说明

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