📄 sysclock.lst
字号:
C51 COMPILER V8.01 SYSCLOCK 09/30/2007 11:14:55 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE SYSCLOCK
OBJECT MODULE PLACED IN SysClock.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SysClock.c LARGE BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
line level source
1 #define __SYSCLOCK_H__
2
3 #include "Config.h"
4 /********************************************************************************************************
5 **函数名称:SDelay
6 **函数功能:时钟切换的延时
7 **入口参数:无
8 **出口参数:无
9 ********************************************************************************************************/
10 void SDelay(uchar T)
11 {
12 1 uchar i;
13 1 for(; T > 0; T --)
14 1 for(i = 5000; i > 0; i --);
15 1 }
16
17 /********************************************************************************************************
18 **函数名称:SysClockInit
19 **函数功能:初始化时的时钟设置
20 **输 入:无
21 **输 出:无
22 ********************************************************************************************************/
23 void SysClockInit(void)
24 {
25 1
26 1 DEVCLKCFG1 &= 0xF0; //屏蔽时钟分频位
27 1 DEVCLKCFG1 |= (CLKDIV & 0x0F); //设置分频值
28 1
29 1 DEVCLKCFG1 |= BIT5; //使能时钟分频器
30 1
31 1 //--------------------------------------------------------
32 1 //外部晶体到内部振荡器的切换
33 1 //--------------------------------------------------------
34 1 #if (SYSCLKSOURCE == INTEROSC) //使用内部振荡器
35 1 DEVCLKCFG2 |= BIT6; //使能内部OSC,同时保持外部OSC
36 1 SDelay(100); //等待振荡器稳定
37 1 DEVCLKCFG1 |= BIT6; //选择内部时钟源
38 1 //SDelay(100); //可选的稳定时间
39 1 DEVCLKCFG2 &= ~BIT7; //禁止外部时钟源
40 1 //--------------------------------------------------------
41 1 //内部振荡器到外部晶体的切换
42 1 //--------------------------------------------------------
43 1 #elif(SYSCLKSOURCE == EXTEROSC)
DEVCLKCFG2 = (BIT7 | BIT6 | BIT2); //使能外部晶振,时钟范围4M-25M,同时保持内部振荡器
//SDelay(100); //等待外部晶体振荡器稳定100ms@40MHz
DEVCLKCFG1 &= ~BIT6; //选择使用外部振荡源
//SDelay(100); //可选的延时时间
DEVCLKCFG2 &= ~BIT6; //禁止内部振荡源
#endif
50 1 }
51
52 /********************************************************************************************************
53 **函数名称:SysClockSet
54 **函数功能:选择系统的时钟函数,注意改变时钟后,相应的波特率也变化了
55 **输 入:无
C51 COMPILER V8.01 SYSCLOCK 09/30/2007 11:14:55 PAGE 2
56 **输 出:无
57 ********************************************************************************************************/
58 /*
59 void SysClockSet(uchar Source, uchar DIV)
60 {
61 //先切换时钟源再设置分频
62 switch(Source)
63 {
64 case INTEROSC:
65 DEVCLKCFG2 = BIT7 | BIT6; //使能内部振荡器,同时保持外部振荡器使能
66 SwitchDelay(10); //等待内振荡器稳定100ms@40MHz
67 DEVCLKCFG1 |= BIT6; //选择使用内部振荡源
68 SwitchDelay(10); //可选的延时时间
69 DEVCLKCFG2 &= ~BIT7; //禁止外部振荡器
70 break;
71 case EXTEROSC:
72 DEVCLKCFG2 = (BIT7 | BIT6 | BIT2); //使能外部晶振,时钟范围4M-25M,同时保持内部振荡器
73 SwitchDelay(10); //等待外部晶体振荡器稳定100ms@40MHz
74 DEVCLKCFG1 &= ~BIT6; //选择使用外部振荡源
75 SwitchDelay(10); //可选的延时时间
76 DEVCLKCFG2 &= ~BIT6; //禁止内部振荡源
77 break;
78 default:
79 break;
80 }
81
82 DEVCLKCFG1 &= 0xF0; //设置分频值
83 DEVCLKCFG1 |= (DIV & 0x0F); //
84 }
85 */
C51 COMPILER V8.01 SYSCLOCK 09/30/2007 11:14:55 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _SDelay (BEGIN)
; SOURCE LINE # 10
;---- Variable 'T' assigned to Register 'R7' ----
; SOURCE LINE # 11
; SOURCE LINE # 13
0000 ?C0001:
0000 EF MOV A,R7
0001 D3 SETB C
0002 9400 SUBB A,#00H
0004 4007 JC ?C0007
; SOURCE LINE # 14
;---- Variable 'i' assigned to Register 'R6' ----
0006 7E88 MOV R6,#088H
0008 ?C0004:
0008 DEFE DJNZ R6,?C0004
000A ?C0003:
000A 1F DEC R7
000B 80F3 SJMP ?C0001
; SOURCE LINE # 15
000D ?C0007:
000D 22 RET
; FUNCTION _SDelay (END)
; FUNCTION SysClockInit (BEGIN)
; SOURCE LINE # 23
; SOURCE LINE # 24
; SOURCE LINE # 26
0000 53F2F0 ANL DEVCLKCFG1,#0F0H
; SOURCE LINE # 27
0003 43F202 ORL DEVCLKCFG1,#02H
; SOURCE LINE # 29
0006 43F220 ORL DEVCLKCFG1,#020H
; SOURCE LINE # 35
0009 43F340 ORL DEVCLKCFG2,#040H
; SOURCE LINE # 36
000C 7F64 MOV R7,#064H
000E 120000 R LCALL _SDelay
; SOURCE LINE # 37
0011 43F240 ORL DEVCLKCFG1,#040H
; SOURCE LINE # 39
0014 53F37F ANL DEVCLKCFG2,#07FH
; SOURCE LINE # 50
0017 22 RET
; FUNCTION SysClockInit (END)
C51 COMPILER V8.01 SYSCLOCK 09/30/2007 11:14:55 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
_SDelay. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
T. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
DEVCLKCFG1 . . . . . . . . . . . . . . SFR DATA U_CHAR 00F2H 1
DEVCLKCFG2 . . . . . . . . . . . . . . SFR DATA U_CHAR 00F3H 1
SysClockInit . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
wchar_t. . . . . . . . . . . . . . . . TYPEDEF ----- CHAR ----- 1
va_list. . . . . . . . . . . . . . . . TYPEDEF ----- PTR ----- 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 38 ----
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 + -