📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 03/10/2009 15:02:49 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: D:\软件\单片机\proteus7.1+keil8.08\Keil8.08\C51\BIN\C51.EXE Main.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 //========================================================================================
2 // 程序功能: 读DS1302时间至点阵屏显示
3 // 硬件平台: 普罗太克UPS状态采集系统
4 // CPU为PIC16F877时, 可以用ICD2来调试, 也可以进行烧写, 但价格较PIC16F74贵
5 // CPU为PIC16F74时, 只能用ICD2来烧写, 但价格便宜
6 // 两者的资源差别不是很大, 主要在ROM容量以及AD位数, 详见<<PPIC6C74|16F74|16F877资
7 // 对照表.doc>>, 不同的地方用预编译处理
8 // 软件平台: C51
9 // 编写时间: 2009-03-02
10 // 修改时间: 2009-03-02 1、点阵屏上显示的字是反的,将字模选项中取模走向设为逆向
11 // 2、点阵是从右向左显示,就是第一次送的字会右移至最右端,之后就将最右端
12 // 的字先行送出.即将for(cCharIndex=0;cCharIndex<8;cCharIndex++)改为
13 // for(cCharIndex=7;cCharIndex>=0;cCharIndex--) 但cCharIndex应定义为char
14 // 2009-03-03 将点阵显示程序跟ds1302时间程序合并起来,并坐了相应的修改
15 // 修改时间显示 点阵屏出现乱码,没有将DS1302的时间存放到显存转为ASCII,
16 // 如:G_ucDiszone[0]=((ucCurtime[2]&0xf0) >> 4+'0') ;
17 // 2009-03-04 时间运行时.':'以0.5s闪烁时经过一段时间会出现偏离.由于单片机与ds1302的晶振
18 // 不同,一段时间后自然就会偏离,之后根据时钟各位秒,每加1秒单片机就开定时,
19 // 每定时到500Ms关定时并作出相应的处理.
20 // static uc ucPreSecond=10; 去当前秒的值
21 // if((G_ucTime[0]!=ucPreSecond)&&(TR0==0) ) //':’以500的时间闪烁
22 // {
23 // TR0=1;
24 // G_b500mS=0;
25 // }//if
26 // if( G_b500mS==0 )
27 // {
28 // G_ucDiszone[5]=':';
29 // }//if
30 // else
31 // {
32 // TR0=0;
33 // G_ucDiszone[5]=' ';
34 // ucPreSecond=G_ucTime[0];
35 // }//else
36
37 // 2009-03-08 为什么(<<4)!=(*16)? send(tab[(G_ucDiszone[a]-'0')<<4+ucRow])与send(tab[(G_ucDiszone[a]-
-'0')*16+ucRow])
38 // 现象不同,原因是C语言中运算指令有优先级别,上句中没有加括号,是先运行+再运行<<
39 // 因此就出现错误,将其改为send(tab[((G_ucDiszone[a]-'0')<<4)+ucRow]);
40
41 // 2009-03-09 时间运行且':'闪烁时,P0口所对应的其他点阵屏中的二极管会有微亮现象。将时间显示屏蔽后单独
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -