📄 hal4sys.lst
字号:
C51 COMPILER V7.06 HAL4SYS 02/17/2004 14:42:22 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE HAL4SYS
OBJECT MODULE PLACED IN Hal4sys.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Hal4sys.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*IDE外设低层代码
2 //*************************************************************************
3 //
4 // P H I L I P S P R O P R I E T A R Y
5 //
6 // COPYRIGHT (c) 1999 BY PHILIPS SINGAPORE.
7 // -- ALL RIGHTS RESERVED --
8 //
9 // File Name: Hal4sys.C
10 // Author: Hilbert Zhang ZhenYu
11 // Created: Nov. 19, 99
12 // Modified:
13 // Revision: 0.0.
14 //
15 //*************************************************************************
16 //
17 //*************************************************************************
18 */
19 #include <reg51.h> /* special function register declarations */
20 #include <intrins.h>
21 #undef GLOBAL_EXT
22 #include "SysCnfg.h"
23 #include "BasicTyp.H"
24 #include "Hal4Sys.h"
25 /*
26 //*************************************************************************
27 // Public Data
28 //*************************************************************************
29 */
30 INT8_EXT Hal4Sys_ClockTicks;
31 /*
32 //*************************************************************************
33 // Functions
34 //*************************************************************************
35 */
36 void Hal4Sys_InitTimer0(void) //定时器0初始化设置
37 {
38 1 //Init Timer0;
39 1 TIMER0_MODE &= 0XF0; // clear Timer 0 amd Keep Timer 1
40 1 TIMER0_MODE |= 0X01; // 16bit Timer
41 1 TIMER0_PRIORITY = 0; // 0 prority of Timer 0
42 1 TIMER0_IRQ_ENABLE = 1; // Enable IRQ Timer0
43 1 TIMER0_LOW = 0x00; // 1 MS interval @24MHz
44 1 TIMER0_HIGH =TIMER0_AT24MHZ;
45 1 TIMER0_START = 1; // Start Timer 0
46 1 }
47
48
49 void Hal4Sys_Wait4US(void)
50 {
51 1 // @24MHz
52 1 _nop_();
53 1 _nop_();
54 1 _nop_();
55 1 _nop_();
C51 COMPILER V7.06 HAL4SYS 02/17/2004 14:42:22 PAGE 2
56 1 }
57
58
59 void Hal4Sys_WaitInUS(INT16 time)
60 {
61 1 for(; time != 0; time -- ); //once 10 states
62 1 }
63
64
65 void Hal4Sys_WaitInMS(INT8 time)
66 {
67 1 LowerIRQL();
68 1 Hal4Sys_ClockTicks = 0 ;
69 1 while(Hal4Sys_ClockTicks > time);
70 1 }
71
72 /* PIO mode for D12 access */
73
74 void Hal4Sys_D12CmdPortOutB( INT8 val) //D12写命令
75 {
76 1 *((INT8 xdata *)D12_command) = val;
77 1 }
78
79
80 void Hal4Sys_D12DataPortOutB( INT8 val) //D12写数据
81 {
82 1 *((INT8 xdata *)D12_data) = val;
83 1 }
84
85
86 unsigned char Hal4Sys_D12DataPortInB( void) //D12读
87 {
88 1 return *((INT8 xdata *)D12_data);
89 1 }
90
91
92 void Hal4Sys_ATAPortOutB(INT16 Addr, INT8 Data) //ATA写一字节
93 {
94 1 *((INT8 xdata *)Addr) = Data;
95 1 }
96
97
98 INT8 Hal4Sys_ATAPortInB(INT16 Addr) //ATA读字节
99 {
100 1 return *((INT8 xdata *)Addr);
101 1 }
102
103
104 INT16 Hal4Sys_ATADataPortInW(void) //ATA读字16位
105 {
106 1 return *((INT16 xdata *)ATAREG4IN_DATA);
107 1 }
108
109
110 //Amend by Liu Ying Bin
111 INT16 Hal4Sys_SwapINT16(INT16 wData)
112 {
113 1 return ( (wData<<8)|(wData>>8) );
114 1 }
115
116
117 INT32 Hal4Sys_SwapINT32(INT32 dData)
C51 COMPILER V7.06 HAL4SYS 02/17/2004 14:42:22 PAGE 3
118 {
119 1 dData = (dData&0xff)<<24|(dData&0xff00)<<8|(dData&0xff000000)>>24|(dData&0xff0000)>>8;
120 1 return dData;
121 1 }
122
123
124 void Hal4Sys_ResetD12(void) //D12复位
125 {
126 1 D12RST_N = 0; // reset D12 , Holdup time > 2 uS.
127 1 Hal4Sys_WaitInMS(2000);
128 1 D12RST_N = 1;
129 1 Hal4Sys_WaitInUS(100);
130 1 }
131
132
133 void Hal4Sys_InitD12(void)
134 {
135 1 Hal4Sys_ResetD12();
136 1 D12INT_EDGE = 0; // Level trigle for D12INT_N
137 1 D12INT_PRIORITY = 0; // 0 Priority Level of D12INT_N
138 1 D12INT_ENABLE = 1; // Enalbe External IRQ0 for D12INT_N
139 1 }
140
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 275 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -