📄 pcalvd.lst
字号:
C51 COMPILER V8.05a PCALVD 10/15/2006 22:08:33 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE PCALVD
OBJECT MODULE PLACED IN pcalvd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pcalvd.c OMF2 BROWSE DEBUG
line level source
1
2 #include "config.h"
3
4
5 #define IN_PCALVD
6
7 #if PCALVD_USING
8
9 sbit EPCA = IE^6; // PCA中断屏蔽位
10 sfr CH = 0xf9; // PCA计数器高8位
11 sfr CL = 0xe9; // PCA计数器低8位
12
13 sfr CCON = 0xd8; // PCA控制寄存器
14 sbit CCF0 = CCON^0; // PCA模块0中断标志
15 sbit CCF1 = CCON^1; // PCA模块1中断标志
16 sbit CR = CCON^6; // PCA计数器容许标志
17 sbit CF = CCON^7; // PCA计数器溢出标志
18
19 sfr CMOD =0xd9; // PCA工作模式寄存器
20 //sbit CIDL = CMOD^7;
21 //sbit CPS1 = CMOD^2;
22 //sbit CPS0 = CMOD^1;
23 //sbit ECF = CMOD^0;
24
25 sfr CCAP0H = 0xfa; // PCA捕捉模块比较寄存器
26 sfr CCAP1H = 0xfb;
27 sfr CCAP0L = 0xea;
28 sfr CCAP1L = 0xeb;
29 //------------------------
30 sfr PCA_PWM0 = 0xf2; // PCA模块pwm寄存器
31 sfr PCA_PWM1 = 0xf3;
32
33 sfr CCAPM0 = 0xda; // PCA 模块0的工作模式寄存器
34 sfr CCAPM1 = 0xdb; // PCA 模块1的工作模式寄存器
35
36 unsigned char idata timer_100ms=0x00; //秒钟的定时标志
37 //unsigned char idata timer_ff_fb_flag=0x00; //快进快退的标志,当快进快退的的按键松开后一段时间要切换到p
-lay
38
39 // 本系统外部晶振为22.1184M ,时钟源实际为22.1184M/12=1843200
40 // 则: TIMER_100uS= 1843200 * 0.0001 = 184 = 0X00B8
41 // TIMER_500uS= 1843200 * 0.0005 = 921 = 0X0399
42 // TIMER_1mS= 1843200 * 0.001 = 1843 = 0X0733
43
44 void pcalvd_initialize(void)
45 {
46 1 // 开放低压中断
47 1 AUXR |= 0X00; //开放低压中断 BIT2 ELVDI -> 0:禁止低压中断 1:开放低压中断
48 1
49 1 // 将pca设定为定时器
50 1 //C P S 1 C P S 0 选择P C A 时钟源输入
51 1 //0 0 0 , 内部时钟, F o s c / 1 2
52 1 //0 1 1 , 内部时钟, F o s c / 2
53 1 //1 0 2 , 定时器0 溢出, 由于定时器0 可以工作在1 T 方式, 所以可以
54 1 // 达到计一个时钟就溢出, 频率反而是最高的, 可达到F o s c
C51 COMPILER V8.05a PCALVD 10/15/2006 22:08:33 PAGE 2
55 1 //1 1 3 , E C I / P 3 . 4 脚的外部时钟输入( 最大速率= F o s c / 2 )
56 1 CMOD = 0x01; // 选择时钟为内部时钟的1/12,开启定时
57 1 CCAPM0 = 0x48; // 16bit软件定时,容许中断
58 1 // CCAPM1 = 0x48; // 16bit软件定时,容许中断
59 1 CH = 0xF8; // 定时时间
60 1 CL = 0xCC; //
61 1 // CCAP0H = 0xFC;
62 1 // CCAP0L = 0x66;
63 1 // CCAP1H = 0xFC;
64 1 // CCAP1L = 0x66;
65 1
66 1 CCON = 0x40; // 清除中断标志,启动PCA模式
67 1 EPCA = 0x01; // 开放PCA中断
68 1
69 1
70 1 }
71
72
73 // PCA/LVD 中断向量为 033H 中断查询次序 6
74 // 中断优先级设置 PPCA_LVDH,PPCA_LVD
75 // 中断请求标志: CF + CCF0 + CCF1 +LVDF
76 bit timersecond_flag=0x00; // 秒的标志
77 bit timer500ms_flag=0x00; // 500ms的标志
78 #define TIMER_SECOND_COUNT 1000
79 #define TIMER_500MS_COUNT 400 //主要是为了错开ESS的500MS的发送
80
81 void pcalvd_isr(void) interrupt 6
82 { unsigned char idata i=0x00;
83 1 static unsigned int idata timer_count=0x00; //秒的计算
84 1
85 1 if(CF==0x01)
86 1 {// ---------利用定时器来发送通讯波形------------------------------------------------------------
87 2 // ---- 每次进入此定时需要1ms,则每隔1.96ms需要进入4次
88 2 // ---------处理1ms事件--------------------
89 2 timer_count++;
90 2 if(timer_count==TIMER_500MS_COUNT)
91 2 {timer500ms_flag=0x01;
92 3 }
93 2 if(timer_count>=TIMER_SECOND_COUNT)
94 2 {timer_count=0x00;
95 3 timersecond_flag=0x01; // 1S的标志
96 3 timer500ms_flag=0x01; // 每500ms的整数倍
97 3 // -----------------------------------------------------------------------
98 3 // ---- 1S的定时 -------
99 3 }
100 2
101 2 CH =0xF8;
102 2 CL =0xCC;
103 2 CCON = 0x40;
104 2 }
105 1 else // if((CCF0==0x01)||(CCF1==0x01))
106 1 {CCON = 0x40;
107 2 }
108 1 }
109
110
111 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 106 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.05a PCALVD 10/15/2006 22:08:33 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 3 1
BIT SIZE = 2 ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -