📄 text1.lst
字号:
C51 COMPILER V7.06 TEXT1 01/31/2009 12:11:09 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <iom16v.h> //包含型号头文件
*** WARNING C318 IN LINE 1 OF Text1.c: can't open file 'iom16v.h'
2 #include <macros.h> //包含"位"操作头文件
*** WARNING C318 IN LINE 2 OF Text1.c: can't open file 'macros.h'
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 #define TRUE 1
7 #define FALSE 0
8 #include "YJ1602.C" //包含1602液晶函数文件
*** WARNING C318 IN LINE 8 OF Text1.c: can't open file 'YJ1602.C'
9
10 /******************RTC常量******************/
11 #define RTC_CLK PB7
12 #define RTC_DATA PB5
13 #define RTC_CS PC7
14 //命令
15 #define RD 0x01
16 #define WR 0x00
17 #define C_SEC 0x80 //秒
18 #define C_MIN 0x82 //分
19 #define C_HR 0x84 //时
20 #define C_DAY 0x86 //日
21 #define C_MTH 0x88 //月
22 #define C_WK 0x8A //星期 DATE
23 #define C_YR 0x8C //年
24 #define C_WP 0x8E //控制(写保护)
25 #define C_CHARGE 0x90 //涓流充电
26 #define C_BURST 0xBE //时钟多字节
27 //配置
28 #define CLK_HALT 0x80 //停止时钟控制位 SECOND bit7
29 #define CLK_START 0x00 //启动时钟
30 #define M12_24 0x80 //12/24小时值选择位 HOUR bit7
31 #define PROTECT 0x80 //写保护控制位 CONTROL bit7
32 #define UPROTECT 0x00 //写保护控制位 CONTROL bit7
33 //涓流充电控制常量
34 #define TC_D1R2 0xA5 //high 1 Diode +2K Resistors
35 #define TC_D2R8 0xAB //low 2 Diodes+8K Resistors
36 #define TC_DISABLED 0x00 //Disabled(TCS<>1010 or DS=00 or RS=00)
37 //RAM 命令
38 #define C_RAMBASE 0xC0 //RAM0~RAM30<<1 地址需左移一位
39
40 void Delayus(uint US)
41 {
42 1 uint i;
43 1 US=US*5/4; //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
44 1 for( i=0;i<US;i++);
45 1 }
46 void Delayms(uint MS)
47 {
48 1 uint i,j;
49 1 for( i=0;i<MS;i++)
50 1 for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
51 1 }
52
C51 COMPILER V7.06 TEXT1 01/31/2009 12:11:09 PAGE 2
53
54
55 /*******************************************
56 函数名称: DS1302_init
57 功 能: 初始化DS1302的数据接口
58 参 数: 无
59 返回值 : 无
60 /********************************************/
61 void DS1302_portinit(void)
62 {
63 1 DDRB|=BIT(RTC_CLK)|BIT(RTC_DATA)|BIT(RTC_CS);//将时钟端(RTC_CLK)数据端(RTC_DATA)片选端(RTC_CS)设置为输出
*** ERROR C202 IN LINE 63 OF TEXT1.C: 'DDRB': undefined identifier
64 1 }
65 /*******************************************
66 函数名称: DS1302_writeB
67 功 能: 向DS1302写入一个字节数据(没有RST操作)
68 参 数: byte--要写入的数据
69 返回值 : 无
70 /********************************************/
71 void DS1302_writeB(uchar byte)
72 {
73 1 uchar i;
74 1 for(i=0;i<8;i++) //8位数据计数
75 1 {
76 2 PORTB&=~BIT(RTC_CLK); //拉低时钟端
*** ERROR C202 IN LINE 76 OF TEXT1.C: 'PORTB': undefined identifier
77 2 if(byte&0x01) //当前位是否是1
78 2 {
79 3 PORTB|=BIT(RTC_DATA); //当前位是1,拉高数据端
*** ERROR C202 IN LINE 79 OF TEXT1.C: 'PORTB': undefined identifier
80 3 }
81 2 else
82 2 {
83 3 PORTB&=~BIT(RTC_DATA); //当前位是0,拉低数据端
*** ERROR C202 IN LINE 83 OF TEXT1.C: 'PORTB': undefined identifier
84 3 }
85 2 Delayus(10); //调整时钟和脉冲宽度
86 2 PORTB|=BIT(RTC_CLK); //时钟上升沿(DS1302采样数据)
*** ERROR C202 IN LINE 86 OF TEXT1.C: 'PORTB': undefined identifier
87 2 byte>>=1; //数据右移1位,为送出新数据位做准备
88 2 }
89 1 }
90 /*******************************************
91 函数名称: DS1302_readB
92 功 能: 从DS1302读出一个字节数据(没有RST操作)
93 参 数: 无
94 返回值 : byte--读出的数据
95 /********************************************/
96 uchar DS1302_readB(void)
97 {
98 1 uchar i,byte=0;
99 1 DDRB&=~BIT(RTC_DATA); //将数据端口设置为输入
*** ERROR C202 IN LINE 99 OF TEXT1.C: 'DDRB': undefined identifier
100 1 PORTB&=~BIT(RTC_DATA); //无上拉电阻
*** ERROR C202 IN LINE 100 OF TEXT1.C: 'PORTB': undefined identifier
101 1 for(i=0;i<8;i++) //8位数据计数
102 1 {
103 2 byte>>=1; //保存读入的数据位
104 2 PORTB|=BIT(RTC_CLK); //时钟上升沿
*** ERROR C202 IN LINE 104 OF TEXT1.C: 'PORTB': undefined identifier
105 2 Delayus(10); //延时,调整时钟脉冲宽度
106 2 PORTB&=~BIT(RTC_CLK); //时钟下降沿,DS1302输出数据位
C51 COMPILER V7.06 TEXT1 01/31/2009 12:11:09 PAGE 3
*** ERROR C202 IN LINE 106 OF TEXT1.C: 'PORTB': undefined identifier
107 2 Delayus(10); //等待数据变化(MEGA16太快,必须等待DS1302的数据位输出,否则不能正确读出)
108 2 if(PINB&BIT(RTC_DATA)) //当前位是否是高电平
*** ERROR C202 IN LINE 108 OF TEXT1.C: 'PINB': undefined identifier
109 2 {
110 3 byte|=BIT(PB7); //是高电平就将返回数据的当前位置1
*** ERROR C202 IN LINE 110 OF TEXT1.C: 'PB7': undefined identifier
111 3 }
112 2 else
113 2 {
114 3 byte&=~BIT(PB7); //是低电平就将返回数据的当前位置0
*** ERROR C202 IN LINE 114 OF TEXT1.C: 'PB7': undefined identifier
115 3 }
116 2 }
117 1 DDRB|=BIT(RTC_DATA); //最后将数据端口设置为输出
*** ERROR C202 IN LINE 117 OF TEXT1.C: 'DDRB': undefined identifier
118 1 return byte; //返回读出的数据
119 1 }
120 /*******************************************
121 函数名称: DS1302_writeD
122 功 能: 向DS1302的某个地址写入一个字节数据
123 参 数: addr--地址值(寄存器或RAM)
124 data--要写入的地址
125 返回值 : 无
126 /********************************************/
127 void DS1302_writeD(uchar addr,uchar data)
*** ERROR C141 IN LINE 127 OF TEXT1.C: syntax error near ')'
128 {
129 1 PORTC&=~BIT(RTC_CS); //拉低片选端
*** ERROR C202 IN LINE 129 OF TEXT1.C: 'PORTC': undefined identifier
130 1 PORTB&=~BIT(RTC_CLK); //拉低时钟端
*** ERROR C202 IN LINE 130 OF TEXT1.C: 'PORTB': undefined identifier
131 1 Delayus(10);
132 1 PORTC|=BIT(RTC_CS); //拉高片选端
*** ERROR C202 IN LINE 132 OF TEXT1.C: 'PORTC': undefined identifier
133 1 Delayus(10); //调整片选脉冲
134 1 DS1302_writeB(addr); //写入操作命令(地址)
135 1 Delayus(10);
136 1 PORTB&=~BIT(RTC_CLK); //拉低时钟端
*** ERROR C202 IN LINE 136 OF TEXT1.C: 'PORTB': undefined identifier
137 1 Delayus(10);
138 1 DS1302_writeB(data); //写入数据
*** ERROR C141 IN LINE 138 OF TEXT1.C: syntax error near 'data'
139 1 PORTB&=~BIT(RTC_CLK); //拉低时钟端
140 1 Delayus(10); //调整片选脉冲
141 1 PORTC&=~BIT(RTC_CS); //拉低片选端
142 1 }
143 /*******************************************
144 函数名称: DS1302_readD
145 功 能: 从DS1302的某个地址读出一个字节数据
146 参 数: addr--地址值(寄存器或RAM)
147 返回值 : data--读出的数据
148 /********************************************/
149 uchar DS1302_readD(uchar addr)
150 {
151 1 uchar data;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -