📄 pcacp.lst
字号:
C51 COMPILER V7.50 PCACP 10/23/2006 13:15:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PCACP
OBJECT MODULE PLACED IN pcacp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pcacp.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 本程序为PCA捕捉例程,判断4个(S1-S4)按键是否按下然后触发中断对LED灯
3 D2\D3取反同时也完成按键扫描的过程
4 ******************************************************************/
5 #include <c8051f340.h>
6
7 #define uchar unsigned char
8 #define uint unsigned int
9
10 void port_init (void); //端口初始化
11 void pca_init (void); //PCA初始化
12
13 sbit led0= P2^6; //定义灯输出脚
14 sbit led1= P2^4; //定义灯输出脚
15 void delay(uint d)
16 {
17 1 uint i;
18 1 for(i=0;i<d;i++);
19 1 }
20 /******************************************************************
21 主程序
22 ******************************************************************/
23 void main (void) {
24 1
25 1 PCA0MD &= ~0x40; //关闭看门狗定时器
26 1 OSCICN |= 0x03; //内部12M晶振
27 1 port_init (); //端口初始化
28 1 pca_init (); //PCA初始化
29 1 EA = 1;
30 1 while(1){
31 2 }
32 1 }
33 /******************************************************************
34 端口初始化程序
35 ******************************************************************/
36 void port_init (void)
37 {
38 1 P0SKIP = 0xFF;
39 1 P1SKIP = 0xFF; //跳过前面I/O端口
40 1 XBR1 = 0x44; // 使能交叉开关,CEX0,连到P2.2
41 1 P2MDOUT |= 0x50; // 使能P2.6,P2.4为推挽输出
42 1 }
43 /******************************************************************
44 PCA初始化程序
45 ******************************************************************/
46 void pca_init (void)
47 {
48 1 EIE1 = 0x10; //允许PCA0中断
49 1 PCA0CPM0 = 0x11; //模块0负沿捕捉使能与配匹使能
50 1 PCA0CPM1 = 0x11; //模块1负沿捕捉使能与配匹使能
51 1 PCA0CPM2 = 0x11; //模块2负沿捕捉使能与配匹使能
52 1 PCA0CPM3 = 0x11; //模块3负沿捕捉使能与配匹使能
53 1 }
54
55 /******************************************************************
C51 COMPILER V7.50 PCACP 10/23/2006 13:15:47 PAGE 2
56 PCA中断程序
57 ******************************************************************/
58
59 void PCA_ISR (void) interrupt 11
60 {
61 1 if(CCF0==1)
62 1 {
63 2 delay(50000);
64 2 delay(50000);
65 2 delay(20000);
66 2 delay(20000);
67 2 while(CCF0==0);
68 2 led0=~led0;
69 2 CCF0 = 0; //清捕捉中断标志
70 2
71 2 }
72 1 if(CCF1==1)
73 1 {delay(50000);
74 2 delay(50000);
75 2 delay(20000);
76 2 delay(20000);
77 2 while(CCF1==0);
78 2 led0=~led0;
79 2 CCF1 = 0; //清捕捉中断标志
80 2 }
81 1 if(CCF2==1)
82 1 { delay(50000);
83 2 delay(50000);
84 2 delay(20000);
85 2 delay(20000);
86 2 while(CCF2==0);
87 2 led1=~led1;
88 2 CCF2 = 0; //清捕捉中断标志
89 2 }
90 1 if(CCF3==1)
91 1 { delay(50000);
92 2 delay(50000);
93 2 delay(20000);
94 2 delay(20000);
95 2 while(CCF3==0);
96 2 led1=~led1;
97 2 CCF3 = 0; //清捕捉中断标志
98 2 }
99 1
100 1
101 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 160 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -