代码求解释,最好每行怎样添加注释释 本人新手

初学者自制的时钟:每行代码都有备注,进来不亏。 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
初学者自制的时钟:每行代码都有备注,进来不亏。
20:23:19  
郭天祥老师实验板做的时钟,代码每一行都有备注;非常适合初学者!因为我也是初学者,可以一起交流啊。
所用技术:定时器,矩阵键盘,1602液晶,51单片机,中断,I2C保存时间,串口通信,串口缓冲区(核心),串口协议头(核心),时间缓冲区(核心),定时器复用技术(核心),状态机编程思想(核心),多文件编程技术,预处理技术等等,非常适合初学者。先看大概的,然后你决定要不要下载整个代码。
/*********************************************************文件名称:shizhong.C&&主控芯片:STC89C52RC& &&&晶振11.0592MHz功能描述:时钟(1602,IIC,按键,串行接口) 作者日期:田卫卫 / 2013年2月22日版& & 本:V1.1*********************************************************/#include&define.H&& && &&&//公共头文件,可替代reg52.h#include&dulikey.h&& && && && &&&//按键头文件:按键扫描、按键服务#include&LCD1602.h&& && && &&&//1602液晶头文件#include&clock.h&& && && & //时钟头文件:初始化时钟、及时钟走时分秒,每秒写I2C保存时间#include&time.h&& && && &&&//定时器、延时函数等#include&sio.h&& && && && & //串口初始化、接收、串口服务函数等。void main(){& &&&& && & sio_init();& && & //串口初始化函数& && & InitTimer0();&&//定时器0初始化函数& && & ClockInit();& & //时钟显示界面初始化& && & while(1)& && & {& && && && &&&KeyService(clock);& && &&&//调用键盘服务函数& && && && &&&sio_service();& && && &//调用串口服务函数& && && && &&&WRclock ();& & //调用时钟计时函数& && & }& && && && &} #include&define.H&#include&clock.h&#include&time.h&#include&LCD1602.h&#include&I2C.h&#include&dulikey.h& uchar code clock1[]=&I Like Clock&;& & //液晶第一排uchar clock[]={23,59,50};& & //时间缓冲区 void ClockInit(){//& & Write(clock,1,3);& & //////////////////////////调试初始化用的,把“时:分:秒”写入I2C。& && & & && & Delayms(1000);& && && && &//上电后等电压稳定& && & Read(1,3,clock);& &&&/*从I2C器件第1个存储区开始,连续读取3个字节,放入时间缓冲区中*/& && & Lcd_init();& && && && && && && && && &/*LCD1602液晶初始化函数*/& && & & && & WRLCD();& &&&//把时间缓冲区“时:分:秒”,写在液晶屏上。& && & TaskCount[1] = 500;& && && && & // TO进中断的次数:500次& && & TaskMark[1]&&= 0;& && &&&// 启动此任务的定时器} void WRclock ()& & //时钟计时程序{& && & if (TaskMark[1] == 1)&&//1秒标记,定时器中断2ms*500次;& && & {& && && && &&&clock[2]++;& && && &&&//秒+1& && && && &&&TaskMark[1] = 0;& && && & //1秒标记 清零& && && && &&&if (clock[2]==60)& &//秒 = 60?& && && && &&&{& && && && && && && &clock[2]=0;& && && && &//秒=60!秒=0;& && && && && && && &clock[1]++;& && && &&&//分+1& && && && && && && &if (clock[1]==60)& &//分 = 60?& && && && && && && &{& && && && && && && && && & clock[1]=0;& && && && &//分=60!分=0;& && && && && && && && && & clock[0]++;& && && &&&//时+1& && && && && && && && && & if (clock[0]==24)& &//时= 24?& && && && && && && && && && && &&&clock[0]=0;& && && && &//时=24!时=0;& && && && && &&&& && && && && && && &}& && && && &&&}& && && && &&&Write(&clock[0],1,3);& & //I2C写& && && && &&&WRLCD();& &&&//把时间缓冲区“时:分:秒”,写在液晶屏上。& && & }}
/*********************************************************文件名称:sio.c& && && &&&主控芯片:STC89C52RC& && && && &晶振11.0592MHz功能描述:串口程序函数名称:含串口中断函数!其余函数详见头文件sio.h作者日期:田卫卫 / 2013年2月21日版& & 本:V1.0*********************************************************/#include&define.h&#include&sio.h&#include&time.h&#include&lcd1602.h& #define T1MS_1200bps& &0xe8;& &&&/* (e8,-24,SMOD=0) @1200bps&&pcon&=0x7f @11.0592MHz*/#define T1MS_2400bps& &0xf4;& &&&/* (f4,-12,SMOD=0) @2400bps&&pcon&=0x7f */#define T1MS_4800bps& &0& &&&/* (fa, -6,SMOD=0) @4800bps&&pcon&=0x7f */#define T1MS_9600bps& &0& &&&/* (fd, -3,SMOD=0) @9600bps&&pcon&=0x7f */#define T1MS_19k2bps& &0& &&&/* (fd, -3,SMOD=1) @19.2kbps pcon|=0x80 */ #define SIOADDNUM&&3& &&&//协议头数;设置为0,可以关闭协议头。uchar code SIOADD[SIOADDNUM]={0xeb,0x00,0xaa};&&//定义串口协议头 uchar inbuf[BUFS];& && && && &&&//串口接收缓冲区uchar buf = 0;& && && && && &//统计串口接收到本次数据包的总数量。 /*********************************************************函数名称:sio_service();功能描述:串口服务程序,处理串口接收缓冲区inbuf[]的数据。输入参数:全局变量 buf,TaskMark[0]包含函数:send(uchar dat);作者日期:田卫卫 / 2013年2月21日*********************************************************/void sio_service(){& && & if(TaskMark[0] != 0)& &&&//如果为真,说明收到了数据,而且本次数据包接收已经结束。& && & {& && && && &&&uchar i=0,buf_temp=0;& && && &//串口缓冲区服务程序当前指向位置。& && && && &&&while (buf_temp & SIOADDNUM)& && &//协议头处理核心:循环SIOADDNUM次,判断协议头。& && && && &&&{& && && && && && && &if (inbuf[buf_temp] == SIOADD)& && && &&&//协议头处理核心:协议头相同& && && && && && && &{& && && && && && && && && & i++;& && && && && &//协议头处理核心:指向下一个要判断的协议头& && && && && && && && && & buf_temp++;& &//协议头处理核心:指向下一个要判断的协议头& && && && && && && &}& && && && && && && &else& && && && && && && &&&//协议头处理核心:协议头错误& && && && && && && &{& && && && && && && && && & buf_temp = 0; //协议头处理核心:清零& && && && && && && && && & buf = 0;& && && & //协议头处理核心:清零& && && && && && && && && && && && && &//协议头处理核心:退出本次循环& && && && && && && &}& && && && && && & & && && && &&&}& && && && &&&if (buf_temp & buf)& && && && &&&{& && && && && && && &if (inbuf[buf_temp]==0 | inbuf[buf_temp]==1)& && && & //判断第4字节是0,还是1;用户可以自定义。& && && && && && && &{& && && && && && && && && & lcdflag = inbuf[buf_temp];& & //把串口接收到得第4个字节给LCD显示标记& && && && && && && && && & buf_temp++;& &//指向下一个串口接收到得元素& && && && && && && && && & WRLCD();& &&&//写液晶屏。& && && && && && && &}& && && && &&&}& && && && &&&ES = 0;& &//先关中断& &&&& && && && &&&while (buf_temp & buf)&&//协议头,如果相等,才会跑到这儿& && && && &&&{& && && && && && && &send(inbuf[buf_temp]);&&//调用串口发送函数,把协议头以后所接收到的数据原封不动发给上位机& && && && && && && &buf_temp++;& && && & //指向下一个要发送的数据& && && && &&&}& && && && &&&ES = 1;& && && & //刚才关了中断,现在要打开,以备下次接收。& && && && &&&TaskMark[0]&&= 0;& && &&&// 此任务的定时标志清零& && && && &&&buf = 0;& && && && && &&&//关键:统计串口接收到本次数据包的总数量--清零。& && & }}
/*********************************函数名:sio_int(sio interrupt)功能:中断+缓冲区方式接收串口数据,把收到的一个字节放在inbuf[bufnum]中.*********************************/void&&sio_int() interrupt 4{& && & ES=0;& && & if(RI)& && &&&/* RI==1 */& && & {&&& && && && &&&if (buf & BUFS)& && && && &//小于缓冲区溢出上限,为真可以接收& && && && &&&{& && && && && && && &inbuf[buf] = SBUF;& && & //读串口数据,放入缓冲区中& && && && && && && &buf++;& && && &&&//缓冲区指向下一个存放位置。& && && && && && && &TaskCount[0] = 5;& && && &// 启动一个定时器中断延时& && && && && && && &TaskMark[0]&&= 0;& && &&&// 启动此任务的定时器& && && && &&&}& && && && &&&else& && && && && && && &&&//大于或等于缓冲区上限,说明本次接收的数据可能被截掉了:错误!& && && && &&&{& && && && && && && &beep = 0;& && &&&// 蜂鸣器响;切勿删除:可作为串口稳定性的参考。& && && && &&&}& && && && && && && && &&&RI=0;& && & }& && & ES=1;} /*********************************函数名:send(uchar dat)功能:向串口发送数据*********************************/void send(uchar dat){& && & SBUF=& && & while(!TI);& && & TI=0;} /*********************************函数名:sel_bps(select bps)功能:设置串口波特率sel为选择通讯速率:&&0=0,2=0,4=19.2k*********************************/void sel_bps(uchar sel){& &&&switch(sel)& &&&{& && &&&case 0:PCON&=0x7f;& && && && && &TH1=T1MS_1200& &/* T1 use sio */& && && && && &TL1=T1MS_1200& && && && && && && &&&case 1:PCON&=0x7f;& && && && && &TH1=T1MS_2400& &/* T1 use sio */& && && && && &TL1=T1MS_2400& && && && && && && &&&case 2:PCON&=0x7f;& && && && && &TH1=T1MS_4800& &/* T1 use sio */& && && && && &TL1=T1MS_4800& && && && && && && &&&case 3:PCON&=0x7f;& && && && && &TH1=T1MS_9600& &/* T1 use sio */& && && && && &TL1=T1MS_9600& && && && && && && &&&case 4:PCON|=0x80;& && && && && &TH1=T1MS_19k2& &/* T1 use sio */& && && && && &TL1=T1MS_19k2& && && && && && &&&}} /*********************************函数名:tran_init()(tranmit initialize)功能:串口初始化& &&&串口通讯参数初始化包含子函数:sel_bps*********************************/void sio_init()& && &&&/* 通讯有关参数初始化 */{/* 定时器初始化 */& && & TMOD=0x21;&&/* T1=MODE2, T0=MODE1,16bit,use time */& && & sel_bps(3); /* 选择通讯速率:0=0,2=0,4=19.2k */ /* SCON寄存器设置 */& && & SM0=0;& && & SM1=1; /* SM0=0 SM1=1,mode1,10bit& && && & */& && & SM2=0; /* data int,无校验(TB8=bit_duble偶) */& && & REN=1; /* 允许串口接收 */& && & TI=0;&&/* 清空发送中断标志位 */& && & RI=0;&&/* 清空接收中断标志位 */ /* IE、IP寄存器设置 */& &&&PS=1;&&/* SIO int high&&优先级 */& && & ET1=0; /* 关 定时器1串口中断 */& && & ES=1;&&/* 开 串口中断 */& && & EA=1;&&/* 开 全局中断 */& && & TR1=1; /* 启动 定时器1 */& && & }
/*********************************文件名称:time.C& && &&&主控芯片:STC89C52RC功能描述:延时函数作者日期:田卫卫 / 2013年2月15日版& & 本:V1.0*********************************************************/#include&define.H&#include&time.h&#include&dulikey.h&#include&intrins.h& uint TaskCount[TASK_NUM];& && && && & //定义变量:为定时任务存放定时值;uchar&&TaskMark[TASK_NUM];& && && &//标志位,0表示时间没到,1表示定时的时间到。 /*///////////////////////////////////////////////////////////////////////////////////////void main(void){& && & InitTimer0();}/////////////////////////////////////////////////////////////////////////////////////////TaskCount[0] = 20;& && &&&// TO进中断的次数:20次TaskMark[0]&&= 0;& && &&&// 启动此任务的定时器///////////////////////////////////////////////////////////////////////////////////////*/void InitTimer0(){& && & TMOD = 0x21;& && & TH0 = 0xF8;& && & TL0 = 0& && & EA = 1;& && & ET0 = 1;& && & TR0 = 1;}////////////////////////////////////////////////////////////////////////////////////////void Timer0Int(void) interrupt 1{& && && && & TH0 = 0xF8;& &//定义为2ms中断一次;中断太频繁效率低,中断太久实时性差。& && & TL0 = 0& && & for (i=0; i&TASK_NUM; i++)& &&&//循环检查TASK_NUM的任务。任务定义见头文件。这里是核心知识:定时器复用技术。& && & {& && && && &&&if (TaskCount) & && && && &&&{& && && && && && && &TaskCount--; & && && && && && && &if (TaskCount == 0)& && && & //只有被定时器减的TaskCount,才置标志位!& && && && && && && &{& && && && && && && && && & TaskMark = 0x01; & && && && && && && &}& && && && &&&}& && & }& && & KeyScan();}////////////////////////////////////////////////////////////////////////////////////////void Delayms(uint xms){& && & uint i,j;& && & for(i=0;i&i++)& && && && &&&for(j=0;j&110;j++);}/////////////////////////////////////////////////////////////////////////////////////////*NOP延时函数,单位 微秒*/void delay(){& && & _nop_();& && & _nop_();& && & _nop_();& && & _nop_();& && & _nop_();& && & _nop_();& && & _nop_();}
本帖子中包含更多资源
才可以下载或查看,没有帐号?
18:33:41  
18:48:20  
作为初学者顶一下
18:59:11  
顶下下{:12:}
高级工程师
19:25:05  
12:23:30  
12:42:39  
不错,顶。。。。
13:18:07  
14:07:26  
这个必须顶
19:18:01  
我看还是用汇编语言好点。
19:37:02  
正需要!谢谢
19:44:34  
很感谢!!!
20:40:49  
我也初学,就会搞简单的东东,路过上来顶下
01:17:04  
鼓励一下,慢慢学吧
06:58:34  
好资料顶啊!
07:02:02  
感谢分享!
07:37:46  
z1695352 发表于
我看还是用汇编语言好点。
你可以用汇编写一个,发上来
15:25:09  
感谢分享!!!!!!!
助理工程师
20:52:24  
怎么现在有广告了。
21:00:06  
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司新手,谁能把带注释的APIBreak.ini发我一下 - 『脱壳破解讨论求助区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 1831|回复: 8
新手,谁能把带注释的APIBreak.ini发我一下
阅读权限10
发帖求助前要善用【】功能,那里可能会有你要找的答案;
求助软件脱壳或者破解思路时,请务必在主题帖中描述清楚你的分析思路与方法,否则会当作求脱求破处理;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人。
新手太菜,谁能把带注释的APIBreak.ini发我一下
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
我连OD都不认识 怎么可能认识APIBreak.ini
菜鸟一个!什么都不懂! 只会灌水!!!
编程不会/破解不会/脱壳不会/ 嫖我最会!
快到碗里来!装。。再装&
我觉得前面三项你都会,最后一个你不会。&
确实,让我等小菜,情何以堪呢。&
大神,别装了,叫我们这些真菜的情何以堪?&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
头像被屏蔽
提示: 作者被禁止或删除 内容自动屏蔽
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
不懂大神在表达什么,小白有鸭梨啊。
对我意见那么大? 抢沙发都被扣CB?&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
全部带注释的话
界面会放不下
膜拜大牛!&
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
自己 上百度一个一个的查一下 自己 改下 加注释会放不开 注释字要少 自己 知道就行了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
我也不会,我也只会灌水
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
& && && && & & && && && && && &
请勿灌水,提高回帖质量是每位会员应尽的义.
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这么坑爹?大家的英语都这么牛B么
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.涓婁紶鍙戝竷
禄 姣忚?娉ㄩ噴鏉ヨВ閲婂?浣曠敓鎴愪竴涓?畬鏁达紝鏈}

我要回帖

更多关于 怎样添加注释 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信