📄 shuma-dingshi.lst
字号:
1 ; ===========================================
2 ;中断方式实现内部TCC功能
3 ;晶振=4MHZ,指令周期为4个时钟
4 ;============================================
5 ;--------------------------------------------------
6 ; 定义变量
7 ;-------------------------------------------------------
8 0001 TCC == 0x01
9 0003 PSW == 0x03 ; 状态寄存器
10 0005 PORT5 == 0x05 ; PORT5端口
11 000E IOCE == 0x0E ; WDT控制寄存器
12 000F IOCF == 0x0F ; 中断控制寄存器
13 000F ISR == 0x0F ; 中断状态寄存器
14 0020 A_BUF == 0x20 ; 保存中断前A的值
15 0022 TCC_Count == 0x22 ; 自定义计数器
16 0006 num == 6
17 0002 Z == 2
18 ;----------------------------主程序------------------------------;
19 ORG 0x00
20 00000 1411 JMP main
21 ORG 0x08
22 ;----------------------------------------------------------------------;
23 00008 TCC_INT:
24 00008 0060 MOV A_BUF, A ; 保存A的值
25 00009 1806 mov a,@0x06
26 0000A 0041 mov TCC,a
27 0000B 18FE MOV A, @0xFE
28 0000C 02CF AND ISR, A ; 清中断标志位
29 ; INC TCC_Count ; 每中断一次TCC_Count计数器加1
30 ; JBS TCC_Count,Z ; 判断TCC_Count是否溢出
31 ;JMP TCC_out ; 没有溢出
32 ; mov a,@num
33 ; mov TCC_Count,a
34 0000D 1801 mov a,@0x01
35 0000E 0345 xor port5,a ;一秒取反输出(P5.0LED)
36 0000F TCC_out:
37 0000F 0420 MOV A, A_BUF ; 恢复A的值
38 00010 0013 RETI ; 中断返回
39 ;----------------------------------------------------------------------;
40 00011 main:
41 00011 1800 MOV A, @0x00
42 00012 000E IOW IOCE ; 关闭看门狗
43 00013 1800 MOV A, @0x00
44 00014 0005 IOW PORT5 ; Port5为输出口
45 00015 0805 BC PORT5,0 ; 关闭LED灯
46 ; mov a,@num
47 ; mov TCC_Count,a
48 00016 18D0 MOV A, @0xd0 ; 保留不需要设置的状态位
49 00017 1902 OR A, @0x02 ; 预除数为16
50 00018 0002 CONTW
51 00019 1801 MOV A, @0x01 ; 允许计数器中断
52 0001A 000F IOW IOCF
53 0001B 0010 ENI ; 开中断
54 0001C 141C jmp $
55 END
0 Error(s), 0 Warning(s), 0 User Message(s)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -