c语言编程期末测试题

2024-09-02

c语言编程期末测试题(共11篇)

c语言编程期末测试题 篇1

科目:C语言编程 适用班级: 11级计算机1、2班试题答案

一、单选题(每小题2分,共30分)

1.、A2、.B3、.D4、.A5、A6、A7、C8、.C9、.A.10、A11、.A12、C13、D14、A15、D

二、填空题(每小题1分,共20分)

1、把10赋值给变量S2、基本型、短整型、长整型、无符号型,int、short、long、unsigned3、字母、数字、下划线4、3.55、36、a=a*b7、a=a/b8、19、3.510、字母、下划线

三.判断题(每小题2分,共10分)

1、正确

2、错误

3、错误

4、错误

5、正确

四、简答题;(每小题5分,共20分)

1、字符常量是由单引号引起的单个字符、字符串常量是由双引号引字节起的字符序列,字符常量的存储单元是一个字节而字符串常量所占的存储单元比它实际的字符个数多一个

2、基本的输入输出一般分为三种:一是单字符的输入与输出,即getchar()和putchar()函数;二是格式化的输入与输出,即scanf()和printf();三是字符串的输入与输出,即gets()和puts()函数3、1)C语言具有中级语言的特性2)C语言结构性能强3)功能齐全4)适用范围广泛

4、编辑、编译、连接、执行

五、程序改错题(每小题4分、共8分)

1、错误:scanf(“%d ”,i);正确:scanf(“%d ”,&i);

2、错误:main正确;main()

六、编程题(第6分,共12分)、main()

{printf(“**********n”);

printf(“Very Good!n”);

printf(“**********n”);

}

2、main()

{inta=15, b=5,sum;

sum=a+b;

printf(“%d”,sum);

}

期末综合测试题(C) 篇2

1. 若关于x的不等式-3x+n>0的解集是x<2,则关于x的不等式-3x+n<0的解集是

()

A. x<2B. x≤2C. x>2D. x≥2

2. 在一次课堂练习中,小敏同学做了如下4道分解因式题.你认为小敏做得不够完整的一道题是()

A. x3-x=x(x2-1)B. x2-2xy+y2=(x-y)2

C. x2y-xy2=xy(x-y) D. x2-y2=(x-y)(x+y)

3. 从A地到B地的路程为m km,某汽车匀速行驶从A地到B地需t h.若汽车速度每小时加快a km,则行驶时间可以缩短()

A.h B.hC.hD.h

4. 如图1,AB∥CD,AE∥FD,AE、FD分别交BC于G、H,则图中共有相似三角形()

A. 4对 B. 5对 C. 6对D. 7对

5. 某校测量了八(1)班学生的身高(精确到1 cm),按10 cm为一段进行分组,绘制出图2所示的频数分布直方图.下列说法正确的是()

A. 该班人数最多的身高段的学生有7人

B. 该班身高低于160.5 cm的学生有15人

C. 该班身高最高段的学生有20人

D. 该班身高最高段的学生有7人

6. 有一三角形纸片ABC,已知∠A=65°,∠B=75°.将纸片的一角折叠,如图3所示,使点C落在△ABC内.若∠1=20°,则∠2为()

A. 30°B. 60°C. 20° D. 65°

二、填空题(每小题3分,共30分)

7. 如果正整数x的与2的和不小于x的一半与的和,则x的值可为.

8. 观察下列各式:2×4=32-1,3×5=42-1,4×6=52-1,…,10×12=112-1.将你猜想到的规律用只有一个字母的式子表示出来.

9. 小王在超市用24元钱买了某种品牌的牛奶若干盒.过一段时间再去该超市,他发现这种牛奶进行让利销售,每盒让利0.4元.他同样用24元钱比上次多买了2盒.若设他第一次买了x盒,那么可列方程 .

10. 如图4,△ABC中,BP ∶ PC=3 ∶ 4,PE∥AB,PD∥AC,则S△ABC ∶ S▱ADPE=.

11. 如图5,在平面直角坐标系中,已知点A(-3,0),B(0,-4),C(0,1).过C作直线l交x轴于D,使得以D、C、O为顶点的三角形与以A、B、O为顶点的三角形相似,这样的直线一共可以作出条.

12. 一组数据4,7,18,29,1,0,5,2的极差是.

13. 某职业技术学校甲、乙两个班举行电脑汉字输入比赛,参加比赛的学生每分钟输入汉字的个数经统计后填入下表:

表1

某同学根据上表得出如下结论:①甲、乙两班学生成绩的平均水平相同;②乙班优秀(每分钟输入汉字不少于100个为优秀)的人数多于甲班优秀的人数;③甲班的成绩波动比乙班的成绩波动大.上述结论正确的是(只填序号).

14. 如图6,AB∥CD,AF分别交AB、CD于A、C,CE平分∠DCF,∠1=100°,则∠2=.

15. 如图7,AB∥CD,AF交CD于E,若∠CEF=40°,则∠A=.

16. 有位同学验证了几个值就认为n2+3n+1(n为正整数)一定是质数.其实当n= 时,n2+3n+1=就不是质数,因而他的判断是错误的.

三、解答题(17~19题每题8分,20~21题每题9分,22题10分,共52分)

17. 深受海内外关注的沪杭磁悬浮交通项目2006年3月获得国务院批准.沪杭磁悬浮交通线建成后,分为中心城区段与郊区段两部分.其中中心城区段的长度约为70 km,约占全程的40%.沪杭磁悬浮列车的票价预定为每千米0.65元~0.75元,请你估计沪杭磁悬浮列车全程预定票价的范围.

18. 根据图8中所给出的长度,用因式的乘积分别表示图形中阴影部分的面积.

19. 阅读材料:

关于x的方程x+=c+的解是x1=c,x2=;x-=c-(即x+=c+)的解是x1=c,x2=-;x+=c+的解是x1=c,x2=;x+=c+的解是x1=c,x2=……

(1)请观察上述方程与其解的特征,比较关于x的方程x+=c+(m≠0)与它们的关系,猜想它的解是什么.并利用“方程的解”的概念进行验证.

(2)由上述的观察、比较、猜想、验证,可以得出结论:如果方程的左边是未知数与其倒数的倍数的和,方程右边的形式与左边完全相同,只是把其中的未知数换成某个常数,那么这样的方程可以直接求解.

请用这个结论解关于x的方程:x+=a+.

20. 如图9所示,花丛中有一盏路灯AB.在灯光下,小明在D点处的影长DE=3 m.沿BD延长线方向行走到达G点,DG=5 m,这时小明的影长GH=5 m.如果小明的身高为1.7 m,求路灯AB的高度(精确到0.1 m).

21. 某市实验中学王老师随机抽取该校八(4)班男生的身高(单位:cm)数据,整理之后制得如图10所示的频数分布直方图(每组含最低身高,但不含最高身高).

根据这个统计图,解答下列问题:

(1)写出一条你从图中获得的信息;

(2)王老师准备从该班挑选出身高差不多的16名男生参加广播操比赛,他应选择身高在哪个范围内的男生,为什么?

22. 已知AB∥CD,直线MN交AB、CD于E、F,EG、FH分别是∠MEB和∠MFD的平分线.求证:EG∥FH.

证法1:如图11(1)所示, 因AB∥CD且MN交AB、CD于E、F, 故∠MEB=∠MFD.

又∵ EG、FH分别平分∠MEB和∠MFD,

∴ ∠1=∠2.所以EG∥FH(同位角相等,两直线平行).

证法2:如图11(2)所示,延长GE到K.因AB∥CD且MN交AB、CD于E、F, 故∠AEF=∠DFE.

又∵ EG、FH分别平分∠MEB和∠MFD, ∴ EK平分∠AEF.

∴ ∠1=∠2. 所以KG∥FH(内错角相等,两直线平行).即EG∥FH.

c语言测试题 篇3

1、求1+2+3+……….+100。(循环)

2、求1*2*3*……….*10。(循环)

3、输入三个数字,输出他们的最大值。(if)

4、输入两个数,交换他们的值并输出。(元素交换)

5、输出9*9乘法表。(双层循环)

逻辑推理题

一、简单推理题

1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一颜色的果冻?

3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?

二、主观题(说明:在以后的工作过程中,我们可定会犯这样那样的错误。既然错误已经酿成,损失在所难免,我们只能想办法把损失减少到最小。如果能巧妙地回答出这些问题,再发生错误的情况下。能让客户有最少的抱怨,公司有最少的损失。)

1.某手机厂家由于设计失误,有可能造成电池寿命比原来设计的寿命短一半(不是冲放电时间),解决方案就是免费更换电池或给50元购买该厂家新手机的折换券。请给所有已购买的用户写信告诉解决方案。

2.一高层领导在参观某博物馆时,向博物馆馆员小王要了一块明代的城砖作为纪念,按国家规定,任何人不得将博物馆收藏品变为私有。博物馆馆长需要如何写信给这位领导,将城砖取回。

C编程笔试题 篇4

1、头文件中的 ifndef/define/endif 干什么用?

2、#include 和 #include “filename.h” 有什么区别?

3、const 有什么用途?(请至少说明两种)

4、在C 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?

5、请简述以下两个for循环的优缺点

// 第一个

for (i=0; i

{

if (condition)

DoSomething;

else

DoOtherthing;

}

// 第二个

if (condition)

{

for (i=0; i

DoSomething;

}

else

{

for (i=0; i

DoOtherthing;

}

优点:

缺点:

优点:

C语言常用笔试题 篇5

1.在X86系统中,如下变量在内存中的字节存放顺序,

DWORD Value1=0x8010011c

UINT Value2=12801

2.ASCII和Unicode有什么区别?汉字是如何显示的?

3.说出你最熟悉的`三种排序方法,用你最熟悉的语言写出其中一种。

4.Bool flag

Floot x 与“零值”比较

Char *p

5.是否了解MVC模式,其中M、V、C各表示什么?

6.列举出你曾经用过或者了解的几种设计模式?

7.int iVal1 = 0, iVal2 = 0;

int * ipVal;

ipVal = &iVal1; What is the Value of ipVal = *ipVal =

ipVal = (int*)iVal1; What is the Value of ipVal = *ipVal =

iVal2 = (int)&iVal1; What is the Value of ipVal = *ipVal =

8.void SwapAB(int A, int B)

{

A=B;

B=A;

}

int main

{

int A,B;

A=1;

B=2;

SwapAB(A,B);

return 0; // A= ?, B= ?

}

What is the value of A and B ?

What is the difference between STRUCTURE and OBJECT ORIENTED PROGRAMMING ?

What is the difference between C and C++ ?

幼儿园大班语言上册期末测试题 篇6

姓名: 得 分:

一.按正确格式写出六个单韵母:

二.写出下列汉字的笔顺笔画:

小:()

云:()

禾:()

开:()

关:()三.组词:

手()生()苗(车()米()水(耳()头()雨(画 画 画 画 画)早()虫()冬()))

四.找朋友:

多 老 左 前 开

幼 关 少 后 右 五.选填量词:

片 个 朵 本 支 匹 一()叶子 一()花 一()铅笔 一()苹果 一()书 两()马 六.看图补充句子:

1.天上飘着几朵()云。2.田里长着青青的()苗。

《影视语言分析》期末试题及答案 篇7

————蒙红

1.从光影、色彩两个角度分析《云中漫步》的画面造型语言?

1)光影:夕阳斜下,一派祥和,爱情慢慢的降临在这样的美景之中!再配上小提琴 和钢琴的协奏曲,光影世界里德诸多结合也就显得那么相得益彰。

“庄园,古堡,农场主,爱情”这种如名著小说似的设定,使得电影在很多场景里显得高雅而浪漫,使得整个电影的浪漫色彩显得浓重而又不过火!色彩的调和与爱情的发展不需浓墨重彩,薄暮之中的清晨与日暮使得葡萄园里的葡萄显得温暖而甜美!此般情境里的爱情来的悄无声息 又怎么会被人们太轻易地发现呢?

整体上竟然有种音乐剧般得感受。红酒成为电影的最主要场景,成为男女主人公情到浓时的浪漫见证,同时也成为预示故事结局的主角。“品味爱情,如同红酒般有甘甜、有酸楚,有醒目的一刻,也有失落的终极。”杯中的桑干亭亭玉立于面前,眼前亮起一片莹润的颜色,而只有把它送入口中,才知其中的极致美味和酸楚无奈,这也许才是爱情的真实写照。

2)色彩:全片以金黄的怀旧色调来诉说一段气氛朦胧的爱情故事,并伴以浓厚的拉丁风味,部分片段维持了导演擅长的魔幻写实手法,葡萄园的美感亦相当怡人。这个经典的爱情故事,在我的印象里只留下大片的火光和苍山暮霭之中的葡萄园,一个在镇子上奔跑着的男子和在深夜窗下传来的悠扬琴声。在“云乡”,导演用大量的空镜头向我们展示了美丽的田园风光,夕阳中的小路,雾霭下的葡萄园,宁静的村庄。那种乡间的浪漫气息很容易让人联想到陶渊明的《桃花源记》或John Denver的《乡村路带我回家》。保守率真的父亲,慈祥的母亲和奶奶,爱吃巧克力的爷爷,顽皮的弟弟,友善的庄园仆人„„影片所极力渲染的 “家”的和谐氛围不仅打动了保罗,也打动了我们。什么是“家”?它带给你温暖,带给你勇气,它为你提供庇护,使你能够成长。它包容你的一切,使你在每一个夜晚都感受到时光的静谧和岁月的静好。

2.在《寻枪》中为什么要用到大量的主观镜头?

警察马山在寻枪的过程中还在寻求什么?

1)主观镜头的运用让观众身临其境地参与到剧中人的活动场景,感同身受的获取电影人物的所见所闻、所思所想,从而设身处地的为其着想,更好地理解人物性格和剧情发展。而且,主观镜头对人物情绪和心理的刻画、对剧情悬念氛围的营造都起到相当重要的作用。主观镜头运用越多,观众越是渗入到剧中人的感官世界,越有被蒙蔽的感觉,也就越有挣脱蔽障、挖掘谜底的欲望。导演正是把握了主观镜头能够制造悬念色彩这一重要因素,贯穿于“寻枪”整个过程,吸引观众去推理、猜测最后的真相,使得《寻枪》故事变得如此扣人心弦、紧张有趣。

2)警察马山在寻枪的过程中还在寻求责任,以及自我与本我的统一。

警察丢了用来维护正义的工具和能力,失掉了对公众的责任,失掉了男人应该有的担当。马山作为家庭中是唯一的男人,肩负着呵护好妻子,教育好孩子的责任。但是影片中,我们能看到的吵架画面就不下3次,李小萌的出现进一步使双方感情沦陷。马山被捕入狱时,他的儿子反过来教育他,该多读读书,出狱以后不准打他,可见马山没有尽到一个做父亲担当的责任。马山寻枪的过程也是他找寻丢失的责任的过程。马山找了,也找到了。影片最后,当马山要用血肉之躯去引诱歹徒时,他悔悟到了作为家中唯一的男人应当充当什么角色。他留了一束小花给相扶持多年的妻子,又留了一包弹珠和六根棒棒糖给儿子,意表对于妻子和孩

子最后的关怀,而他留给自己的是最后一颗子弹。在结尾,他找到了真枪,同时也找到了责任。

换个角度剖析,《寻枪》又可以抽象为:自我与本我的剥离,自我与本我的互相斗争,自我与本我的对话,最终找到了自我与本我的归一。?

3.通过本门课程的学习,你学会了怎样去看电影?

学习了本门课程后,突然发现自己以前看的不是电影,而是热闹。现在我学会了用影视语言分析的眼光去欣赏每一部电影,我会一遍又一遍的去看同一部电影,每一次的感受都是不一样的。通常,我会从以下几个方面来看电影:

第一:先看光,每个镜头中光是怎么用的,下一个镜头的光有什么变化,有没有投影的变化,有没有黑天白天的变化,有没有阴天、下雨;

第二:空间有没有大小的变化,大房间,小房间,有没有室内室外的变化;

第三:听声音,是同期还是后期,每个镜头中有有没有表现出的音空间来,它是什么样的,下个镜头的声音空间感有什么变化 ;

第四:背景是什么,与前景的关系,它怎样变的(这是透视关系);

第五:有没有运动,是画面内的被摄体在运动,还是摄影机在运动,是水平运动(左右横移)多还是纵深运动多。

第六:有没有用变焦,它是准确地表现了两个人物关系,还是造成了错误的关系。变焦用得多不多;摇镜头有没有增加新的信息或含义;

第七:运动的动与静的关系,是前景有运动,背景没有;或是背景有运动,前景没有;或是前后景都有,或前后景都没有;

第八:剪辑点在哪里,起幅的画面是怎么样的,落幅的画面是怎样的,如果是一个人在跑,注意起幅的人体造型好不好,好与不好,看的时候有什么不同;是用切换多,还是用叠化多。

第九:在一个镜头中人物的调度是怎样的,有没有第四面墙的舞台处理(即所有镜头中的人都排成一排面向摄影机,就象幼儿园里的排排坐,吃果果。)演员的单独表演也是力求面向第四面墙?

第十,音乐用在哪里;有没有主题歌,有作用吗?音乐与人物动作(或称表演)关系,音乐与摄影机运动的关系,音乐与色彩变化的关系,音乐与对话的情绪及节奏的关系,音乐与自然音响(即噪声)的关系等等

第十一,如果是故事片,情节的转折点是用什么手段来表现的,是用嘴皮子说出来的,还是无声的段落,如果是你的话,你能用无声把这一段落表现出来吗?

第十二,画面上人物关系的变化,有变化,还是没有变化,A在整个镜头里始终站在B右边,就没有走到B的左边去过,等等;

第十三,画外空间是怎么用的,是作为画面内的空间的延伸,还是另外一个非叙事的空间;

第十四,对话写得是否生活化,还是舞台腔,好念吗?

第十五,每个镜头中人物都穿什么颜色的服装,他们之间的相互关系,也就是说,有没有色彩的调度,即作为流动色彩来使用;

第十六,道具的时代,地域,民族,文化方面准确吗?

第十七,时间上是否用闪回,是用什么手段来表现的,合理吗?

第十八,用长镜头吗?最长的镜头有多长,你感觉是长,还是没有实际那么长,这个长镜头内的人物关系是怎样的。全在画面,或者是一个在画内,一个在画外(正反拍不算内)。第十九,人声,是男高音,女高音,男中音,女中音,男低音这样的搭配吗?

精心的c语言常考的笔试题 篇8

sizeof就是求在内存总占多少字节的问题,最基本的char 1字节 short 2字节 int 4字节

任何的指针都是4字节 sizeof(数组名)=数组占的大小(这里必须注意虽然数组名可作为只想数组首地址的指针,但是sizeof(数组名)求得的不是指针的大小,而是数组大小)

还有就是sizeof(结构体) sizeof(联合体)

举两个例子 struct stu {

Char a;

Int b;

Char c;

};

struct teacher {

Char a;

Char c;

Int b;

};

Sizeof (stu) =12 ;内存中这样存储 char 空空空 int char 空空空

内存4字节对其问题

Sizeof (teacher) =8 ;内存中这样存储 char char空空 int

关于联合体

Union std{

Char a[10];

Int b[3];

}

Sizeof(std)=12; 联合体公用内存,取其中所占内存最大的元素为联合体所占内存

以下为Windows NT下的32位C++程序,请计算sizeof的值

char str[] = “Hello” ;

char *p = str ;

int n = 10;

1. 请计算

sizeof (str ) = 6

sizeof ( p ) = 4

sizeof ( n ) = 4

void Func ( char str[100])

{

请计算

sizeof( str ) = 4

}

void *p = malloc( 100 );

请计算

sizeof ( p ) = 4

还有位段的问题如下

分析:

struct bit

{ int a:3;

int b:2;

int c:3;

};

int main

{

bit s;

char *c=(char*)&s;

cout<

*c=0x99;

cout << s.a <

int a=-1;

printf(“%x”,a);

return 0;

}

输出为什么是

4

1

-1

-4

ffffffff

因为0x99在内存中表示为 100 11 001 , a = 001, b = 11, c = 100

当c为有符合数时, c = 100, 最高1为表示c为负数,负数在计算机用补码表示,所以c = -4;同理

b = -1;

c语言编程期末测试题 篇9

#defineN80

voidfun(int*w, intp, intn)

{

}

main()

{inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

inti,p,n=15;void NONO();

printf(“The original data:n”);

for(i=0;i

printf(“nnEnterp:”);scanf(“%d”,&p);

fun(a,p,n);

printf(“nThe data after moving:n”);

for(i=0;i

printf(“nn”);

NONO();

}

void NONO()

{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。FILE *rf,*wf;int a[N], i, j, p, n;

rf = fopen(“K:k1124003520in.dat”,“r”);

wf = fopen(“K:k1124003520out.dat”,“w”);

for(i = 0;i < 5;i++){

fscanf(rf, “%d %d”, &n, &p);

for(j = 0;j < n;j++)fscanf(rf, “%d”, &a[j]);

fun(a, p, n);

for(j = 0;j < n;j++)fprintf(wf, “%3d”, a[j]);fprintf(wf, “n”);

}

fclose(rf);fclose(wf);

}

大班期末家长会内容c 篇10

班主任:钟丽 教师:雷青青保育员:方丽蓉

2008-1-25

各位家长:你们好!

首先,我代表大班的三位老师对你的到来表示热烈的欢迎,并感谢你们能从百忙之中抽出时间来参加这个家长会,这让我们感受到了你们对我们工作的理解和支持,对你孩子的一种关心,正是有了你们的信任、理解、支持,我们的工作才能顺利开展。在此,我真诚地对你们说一声:谢谢,真诚地谢谢你们的热情支持。同时,更希望你们能一如既往地关心与支持我们的工作。

一、班级分析

大班共有30名幼儿,17名女孩,13名男孩,通过两年半的也更加大胆与自信了,幼儿园学习生活,幼儿各方面的能力都有了一定的进步,能主动地与别人打招呼,同伴与同伴之间的情感交流有了明显的提高;学习变得更加积极主动了且变得更加大胆与自信了,看到孩子点滴的进步我们老师都感到骄傲与自豪。上周我们对全班幼儿进行了测试我们看到了可喜的成绩,现将结果跟家长做一个交流。

(一)在健康领域方面

幼儿变得更加自信与大方了;张语悦、侯沁沁、雷静、佳怡(通过课本剧的表演)自我管理能力提高了(整理学具、玩具的摆放与归类、做老师的小帮手)

(二)认知领域方面

认知领域包括蒙氏数学和常识

1.数学活动:在操作中能发现排列规律(AB、AAB、ABC)并知道怎样排列下去;能手口一致地点数20以内的数,及10以内的单双数,并能唱数1——50;会进行9以内的加减运算,能用加减法解答生活中的问题;

2.艺术活动:孩子们能大胆地在集体面前独唱,并用轻松、协调的动作创造性地表现角色的特点,他们动手绘画时能恰当地安排、布局画面,能根据自己生活印象画简单的情节画,还能较客观地评价自己和同伴的作品,具有一定的美感和审美能力;

3.语言活动:大部分孩子都能在集体活动中专注、较长时间地倾听别人讲话,而且能主动与人用普通话自然、大方地交谈,能有表情地朗诵儿歌、故事,对文字、阅读感兴趣初步对早期阅读萌发兴趣,日常生活中喜欢阅读图书,初步形成良好的阅读习惯;

4.社会活动:孩子们都有了遵守规则的意识和执行规则的能力,能分清是非、倾听别人的意

见和劝告有的观察、语言表达能力、综合能力,综合素质明显提高。但是我们在孩子们身上也发现了一些不容忽视的小问题:个别能力弱的幼儿只喜欢倾听,尚未能养成边听边讲述的习惯。部分幼儿观察图书不够细致,情感体验不够深刻,他们的创新精神还有待进一步培养。

5、英语活动:英语是我园的一大特色,我们采用的是清华幼儿英语它分为三部分:主题儿歌、语感启蒙、阅读启蒙

在主题儿歌方面,主题儿歌从幼儿的兴趣点出发,我们采用游戏的形式贯穿全文进行教学,本班幼儿都非常感兴趣,能够积极参与,孩子也都掌握非常好;语感启蒙方面:语感启蒙是以儿歌和动作表演相结合的进行教学,孩子乐于表现,朗朗上口,相信在家里,你们一打开VCD,幼儿都表演的很棒。

表现在幼儿能认真倾听、大胆的说英语:在活动中能积极开心的参与游戏活动。语音、语感方面较以前有很大的进步特别是对字母的认读方面。

三、介绍本学期取得的成绩。

本班幼儿活动可爱,语言表达能力相对较强,积极参加各类活动,在各类活动中取得了良好的成绩:

1.十月份本班的孩子在早操观摩中得到了园长、老师及各位家长的一致好评。

2.十一月份在进行三园教师语言课的教学比赛活动中本班幼儿在活动中积极参与,大胆发

言,敢于在老师及同伴面前表达自己的见解,因此我们两为老师也取得了不错的成绩。

3.十二月份图形小书制作大赛,我们班级有28人参与,其中11人获奖,其中黄郁芙、张亦

池获最佳童趣奖;黄郁芙获最佳美术奖;林芷妍、侯沁沁获最佳创意奖林思源获最佳贡献奖、郭子欣获最佳人气奖;林可乐、、雷静、陈铉之获优秀奖。在这里非常感谢家长的配合与参与。

4、一月份在“华夏滨江幼儿园第三届亲子运动会”中:沁沁小朋友在活动项目《两人三足》《夹球接力》比赛中都获得了冠军;在活动项目《跳绳》比赛中:我们班级大部分幼儿都掌握了跳跳绳的技能,并取得了很不错的成绩其中吴宇轩、黄郁芙小朋友获得了一等奖;侯沁沁、黄懿、王洁、刘亦涵、林志杰分别获得了二等奖;张佳怡,林可乐、王涛、陈宇华、吴诗慧、林锦、张亦池分别获得了三等奖。

五、问卷调查意见反馈

六、给家长的几点建议:

(1)、多鼓励孩子多表扬孩子发扬积极暗示,避免消极暗示。

(2)、不要给孩子太多的压力,压力是比较得来的,玩的越多获得越多。

(3)、重视幼小衔接,扩大阅读量。让幼儿自己的事情自己做,整理好自己的物品。幼儿的物品要做好记号,以免拿错或丢失,培养细心的好习惯。

(4).幼儿的作业要及时完成,家园联系本希望家长多关心一下。

四、放假时间及注意事项:

1.放假时间及开学时间为;1月31日到2月18日,2月18日正式开学。

2.放假期间注意幼儿的安全,教育幼儿不接受陌生人的东西,不跟陌生人走。在家里不做危

险的事。.3.假期中注意孩子的饮食卫生习惯。不暴饮暴食。

4.帮助孩子复习巩固书本知识内容:看看听听英语VCD、英语书、识字、学习包内容、画

画等。

五、问卷调查意见反馈

C语言编程自我总结 篇11

2.a、写中断程序一定要用using语句指定寄存器组。第1、2、3组都可以,不能是0,否则可能会main()函数冲突。从一个中断程序中调用函数必须和中断使用相同的寄存器组(摘自《Keil Cx51 编译器用户手册中文版》P129)。建议把原本中断函数需要调用的函数直接写在中断函数里,无须调用。

b、51单片机的中断有两个优先级。一个中断不会打断另一个相同优先级的中断。这样相同级别中断可以使用同一个组。比如:低优先级的中断函数都用 using 1,高优先级的中断都用 using 2。这样不会冲突。

3.C语言无符号数容易犯的错误。若定义成有符号数char,则不会陷入死循环。

main(){ unsigned char i;for(i = 2;i>=0;i--){ printf(“%d”,i);} }

4.C51忌讳使用绝对定位_at_,因为只要定义变量和变量的作用域,编译器就会把一个固定地址给这个变量,无须人工将其绝对定位,这样可能引发其他问题。

5.bit与sbit的区别:bit定义的位标量的地址是随机的,而sbit定义的位标量的地址是确定的。bit只能访问芯片内部RAM中的可寻址位20H-2FH,而sbit可以访问芯片内部RAM中的可寻址位和特殊功能寄存器中的可寻址位。注意不能直接在程序里用P1^0等位变量,需要经过sbit定义才可以使用。例如:

bit

tem;sbit led=P1^0;tem的地址是随机分配的,而led的地址则固定为0x90.0。sbit变量后面需要跟等号=。6.为了避免由于使用参数宏而带来意外的错误,需要注意以下几点:

6.1 宏的参数必须带括号,例如 #define CIRCLE_SQUARE(R)3.141*(R)*(R)6.2 对所使用的参数宏进行简单地展开检查;

6.3 使用简单表达式、对参数加括号、避免节外生枝的使用方式(例如“++”、“--”一类都属于不必要的附件运算);

6.4 在参数宏定义时,对于运算顺序通过括号进行明确的限定,只要遵循以上几点,就可以避免大多数应用场合的意外错误。

手把手教你写程序

内容:从最简单的程序入手,手把手教你写程序,让同学们拿到一个复杂的程序或者任务,能快速找到切入点,写出程序,再在此基础上优化程序。当拿到一个单片机任务时,不要急于动手写程序,先仔细分析它的以下几个点:

1、它要单片机整体实现什么功能

2、功能细分(模块化),先干什么,再干什么,最后干什么

3、画初步流程图,(把几个模块画出即可)

4、模块之间的分析:一个模块到另一个模块之间,怎么变换,怎么连接(优化流程图)

5、单个模块分析:每个模块要做什么(流程图细化)

6、所有模块结合连接,细化所有流程图

7、分析单个模块每步要用到的方法或者指令

8、总流程图定型

9、纸上写程序,对照流程图分析其可行性,若不可行则返回

10、上机调试,加注释

11、从小到大,一个功能一个功能地调试;

以上十一步,缺一不可(小程序例外)切记:流程图的确定很重要,需反复修改

大忌:拿到任务,不仔细分析就写程序。即使是小程序,我们也要养成良好的编程习惯,不要一味的追求结果。写小程序可能比别人快,若是大程序,一旦出现思维混乱,或者出现程序调试不出结果,那么你花在调试上的时间,要比别人的多。!!!磨刀不误砍柴工!!!程序的优化:属于后期工作,只有调试出来后,才去优化,如果一开始优化和写程序同时进行,一是加重你的思考量,二是出现问题无从下手。无疑增加了写程序的难度。对于一个初学者,写一个程序,本身头脑就处于紧张的状态,思考的问题就很多,如果此时把优化程序也考虑进去,你脑袋的负荷无疑加重,若你头脑精明,你可以把优化的地方,先在纸上记下来,等到调试结果正常,再把你想到的,优化的地方加进去。

7、如果在中断程序中改变了多字节类型的变量,那么中断程序以外的程序中(主程序,子函数)要使用该多字节类型变量的话,读写前要关中断,读写后再开中断。否则会导致偶尔读写错误。(实质为资源冲突)举一反三:

其他的数据类型也可能有这种影响。例如:长整型、浮点型。例如:

unsigned int ms_counter;void T0(){ //定时器程序每100毫秒中断一次,程序略 if(ms_counter<1000)ms_counter++;} void main(void){ //初始化定时器程序每100毫秒中断一次,程序略 unsigned char tt;ms_counter=0;tt=0;//用tt控制只响一次 while(1){ if(ms_counter<400){ if(tt==0){ tt=1;Sound_on();

} } else { Sound_off();} //其他程序 } }

8、sbit变量不能使用extern关键字,使其在不同的文件中被使用,如要在led.c和main.c文件中使用同一个变量led0,有以下下两种办法:

1.在各种文件中重复定义变量,如在led.c中定义sbit led0=P1^0;同样在main.c中定义sbit led0=P1^0;这样,led0就变成了全局变量,可以在两个文件中使用。

2.将sbit led0=P1^0定义到led.h头文件中,均在led.c和main.c中包含led.h这个头文件。

9、在多文件的程序中声明外部变量(extern和)

如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量Num,不能分别在两个文件中各自定义一个外部变量Num,否则在进行程序的连接时会出现“重复定义”的 错误。正确的做法是:在任一个文件中定义外部变量Num,而在另一个文件中用extern对Num作“外部变量声明”。即extern Num;注意若Num为uchar类型,应当写为“extern uchar Num”,否则会当为int,而导致出错。

当使用static声明变量和函数时,需要在定义变量和函数的基础上加上此关键字,而不能单独使用。例如:

static int a;//定义性声明,需要时,直接使用变量a即可 a = 0x01;

static int funA(int a, int b);//声明,且static不起作用 int funA(int a ,int b)//定义,即使funA有static关键字修饰,但由于static不能单独使用,//故funA仍为外部函数。

{ …… } extern对变量进行声明时,如没有初始化,则为引用性声明,不含定义,如需使用此变量,需要进行定义。例如:

extern int a;//引用性声明,不含定义

extern int a = 0x01;//定义性声明,需要时,直接使用变量a即可 int a;//定义

extern对函数进行声明时,如没有函数体,则为引用性声明,不含定义。

extern int funB(int a ,int b);//引用性声明,不含定义,且extern声明可以省略

extern int funC(int a, int b)//定义性声明 { …… }

10、一般的,要尽量减少中断服务程序的内容和长度。因为在主程序中可以还需要随时响应其他的中断或事件。如果一个中断服务程序过程,很可能会影响到主程序对外部信号的检测和响应。通常,在中断程序中只是改变一些变量或标志位,在主程序中再根据变量或标志位的值进行判断,处理相应的事件。

11、在A/D和D/A转换电路中,电源电压和基准电压的稳定性,对转换的精度影响很大。另外,A/D和D/A转换电路中要特别注意地线的正确连接,否则转换结果将是不正确的,干扰影响将很严重。

12、根据C语言标准,左移“<<”和右移“>>”运算要求操作数至少是int,如果不满int,自动转换成int(C语言整型提升)。因此 uchar a=0x01;a<<8;实际运算,并不是8位数左移8位,而是int型左移8位。

13、在中断里调用其他函数,且要进行参数传递时,必须保证被调用函数所使用的寄存器组与中断函数一样,否则会产生不正确的结果。为了保证被调用的函数与中断函数使用的寄存器一致,可对被调用函数使用using,不过此函数只能被中断函数调用。

14、函数不使用using 时,所使用寄存器组保持与此函数被调用前相同,不对RS0和RS1的值进行修改;当使用了using 关键字后,此函数所使用的寄存器组与using所定义的一样。

15、当指定中断程序的工作寄存器组时,保护工作寄存器的工作就可以被省略。使用关键 字using 后跟一个0 到3 的数对应着4 组工作寄存器当指定工作寄存器组的时候默 认的工作寄存器组就不会被推入堆栈这将节省32 个处理周期,因为入栈和出栈都需要2 个处理周期。为中断程序指定工作寄存器组的缺点是所有被中断调用的过程都必须使用 同一个寄存器组否则参数传递会发生错误。

16、如何使用pdata 类型的变量?当要使用到pdata 类型的变量,如下: void main(void){ uchar pdata a;a=0x01;}

则需要进行如下设置,否则pdata 的变量a则会无效。

a、修改STARTUP.A51的内容。默认时,PPAGEENALBE为0,表示不允许pdata类型的变量,须将其值改为1;PPAGE表示pdata类型的变量存储在哪一页,01H表示存放在外部存储器的第1页,地址范围100H至1FFH,此时P2经STARTUP.A51处理后的值为0x01;此项设置需和BL51连接器的设置一致。

b、修改BL51连接器。根据STARTUP.A51中PPAGE所设置的值来填写Pdata的值,如下图。图中Pdata的值可以填写100H至1FFH中任意一个,表示pdata类型的变量从所填

写的值开始存储。例如,当Pdata填写的值为108H时,表示pdata类型的变量从108H开始存储,因此,存储范围变为了108H至1FFH。

另外,存储模式Compact的作用是将没有指定存储类型的变量定义为pdata类型,对uchar pdata a;变量的定义没有影响,但对uchar a;则有影响。

17、XBYTE的用法。XBYTE存在于#include 头文件中。

XBYTE[0x000F]=data; // 此语句表示将data写到外部RAM中的0x000F data=XBYTE[0x000F] // 此语句表示读取外部RAM中0x000F的数据 以下语句与上面的语句等效:

#define EX_RAM XBYTE[0x000F] //将EX_RAM定义为外部RAM的地址0x000F EX_RAM=data;// 此语句表示将data写到外部RAM中的0x000F data=EX_RAM // 此语句表示读取外部RAM中0x000F的数据

18、如何在keil中用汇编实现51中没有的指令

部分MCU与8051兼容,但会增加8051中没有的指令,如华邦的W77E58和N79E352等芯片,具有8051中没有的指令DEC DPTR。如何才Keil中实现此指令呢? 方法1:

在需要执行该指令的地方放置相应的机器码 MAIN:

MOV DPTR,#02H DB 0A5H;由于从数据手册上得知,DEC DPTR的机器码为0A5H,故此处相当于执行了DEC DPTR指令。

AJMP $ END

方法2:

使用宏定义的方法

/*宏定义,表示用DEC_DPTR代替MACRO与ENDM之间的内容*/ DEC_DPTR MACRO

DB 0A5H;此处不能与MACRO同一行 ENDM

MAIN: MOV DPTR,#02H DEC_DPTR;放置机器码0A5H,相当于执行DEC DPTR AJMP $ END

通过将以上两种方法生成的hex文件调入到编程器中,发现代码一样。经测试,同样可以用以上两种方法代替8051中已有的指令。

例如,从数据手册可知,MOV A,#0FH的长度为2字节,机器码的值为74H,0FH。因此,经验证,以下三个程序等效,产生的HEX文件一样 MAIN: MOV A,#55H DB 74H DB 0FH MOV P1,A AJMP $ END

MAIN: MOV A,#55H MOV A,#0FH MOV P1,A AJMP $ END

TEST MACRO DB 74H DB 0FH ENDM MAIN: MOV A,#55H TEST MOV P1,A AJMP $ END

18、汇编中包含头步骤:

例如,T2CON为定时器2的特殊功能寄存器,地址为0C8H,要对此寄存器赋值01H,除了

MOV 0C8H,#01H 和

T2CON EQU 0C8H MOV T2CON,#01H 外,还有用包含头文件的方法 #include MOV T2CON,#01H 此时,需要将A51中的“Defines 8051 SFR Names”的勾去掉。

19、指针

C51 提供一个3 字节的通用存储器指针。通用指针的头一个字节表明指针所指的存储 区空间,另外两个字节存储16 位偏移量。对于DATA IDATA 和PDATA 段只需要8 位偏移量。Keil 允许使用者规定指针指向的存储段,这种指针叫具体指针。使用具体指针的好处是节省了存储空间编译器不用为存储器选择和决定正确的存储器操作指令产生代码这样就使代码更加简短但你必须保证指针不指向你所声明的存储区以外的地方否则会产生错误而且很难调试。

由于使用具体指针能够节省不少时间所以我们一般都不使用通用指针。

20、EEPROM存放开关机(复位)次数方法:每次开机(复位)读取EEPROM存放开关机的数据,并加1后重新写入EEPROM。

21、C51中,将printf函数与串口输出结合注意事项:

a、关串口中断;

b、初始化串口,并使TI=1;

c、KEIL里扩展出了b(8位),h(16位),l(32位)来对输入字节宽的设置

在Keil C51中用printf输出一个单字节变量时要使用%bd,若使用%d,则默认为双字节宽度,输出可能会出错。如

unsigned char counter;printf(“Current count: %bdn”, counter);而在标准C语言中都是使用%d: printf(“Current count: %dn”, counter);d、输出数据类型的长度应与定义的数据类型长度一致,如:

uint tem2=97;

printf(“%c,%bdn”,tem2,tem2);第一个输出会出错。

22、我一般不刻意的注意这个,都是从软件自身找问题的。

我写程序时对于软件抗干扰都是在程序状态上考虑意外情况的,例如:

if(a == 1){...} else if(a == 2){....} else{//这个else 一定得加的,即使自己认为不可能出现的情况也要加上

..//经过好多程序走飞的情况发现:大多情况都是缺少这个语句条件的,这 //语句可以写成重新初始化a } 还有程序出现堆栈比较深的运算(例如浮点乘除法后)或中断比较深,我加2个_nop_();

23、STC12C5410AD外部RAM使用方法:

a.在Keil中设置外部RAM的起始地址和大小,如下图

b.将变量定义为xdata即可。

24、中断嵌套

当有外部中断0时,中断标志位IE0由硬件自动置1,进入中断服务程序后,IE0被自动清0。若外部中断0触发信号在执行完中断服务程序后仍没有撤除,就会再次使已经变0的中断标志位IE0置1,再次进入中断服务程序;若在响应中断服务程序期间,再次产生外部中断0触发信号时,此中断不能被识别,因为CPU在响应中断时会自动关闭同一中断。

如果外部中断0比外部中断1的优先级高,当在响应外部中断0期间产生外部中断1时,如果执行完外部中断0后,外部中断1的中断请求标志位IE1仍没有清除的话,将会响应外部中断1的请求;但是如果在响应外部中断0期间,外部中断1的触发信号产生后又撤除的话,IE1也会自动清除,也就是说,执行完外部中断0后,不会去响应外部中断1。

当多个中断源同时向CPU请求中断时,CPU就可以通过中断优先权电路率先响应中断优先权高的中断请求,而把中断优先权低的中断请求暂时搁置起来,等到处理完优先权高的中断请求后再来响应优先权低的中断。

如果某一中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志位不被软件人为清除,中断请求的状态就将一直保持,直到CPU响应中断为止。但是对于串行口中断,即使CPU响应了中断,其中断标志位RI/TI也不会自动清零,而必须在中断服务程序中设置

清除RI/TI的指令后,才会再一次地提出中断请求。

25、在满足应用要求的前提下,选择配较低的单片机,较小的RAM/ROM、较低的ADC分辨率、较低的ADC速率,较少的IO管脚都可以降低单片机的整体功耗。当然了,这个得能满足你产品需求的前提下。

26、对于一个数字系统而言,其功耗大致满足公式:P=CV2f。其中C为系统的负载电容,V为电源电压,f为系统工作频率[2]。功耗与电源电压的平方成正比,因此电源电压对系统的功耗影响最大,其次是工作频率,再次就是负载电容。负载电容对设计人员而言,一般是不可控的,因此设计一个低功耗系统,在不影响系统性能的前提下,尽可能地降低电源的电压和工作频率。对于大多数低功耗单片机来说,工作频率越低,意味着消耗的电流也越小,但是不能认为频率越低,系统整体功耗越小,因为工作频率降低,意味着需要更长的处理时间,其他外围电路消耗的电能就越多。目前有很多单片机都允许有两个或者两个以上的时钟源,低频时钟作为如UART、定时器等外围功能器件的时钟源,高频时钟作为系统的主时钟。在不需要高速运行的场合下,低频时钟也可以作为系统主时钟使用。对于需要在工作状态与空闲状态之间频繁切换的应用,在考虑单片机本身低功耗的同时,应该考虑切换时间和切换电流。考虑到有些场合单片机的工作特点,选择单片机不光要关注工作电流,更应该关注单片机休眠时的静态电流。单片机丰富的低功耗模式和极低的静态电流,在满足特定应用功能的同时,有效降低系统的功耗。尽量关闭MCU内部不用的资源,比如ATmega8内部的模拟比较器,默认是开着的,还有ATmega88内部的大多数资源都可以在不用的时候用软件关闭。

27、定时/ 计数器的实时性

定时/ 计数器启动计数后,当计满回0 溢出向主机请求中断处理,由内部硬件自动进行。但从回0 溢出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不同,一般需延时3 个机器周期以上,这就给实时处理带来误差差。大多数应用场合可忽略不计,但对某些要求实时性苛刻的场合,可采用动态补偿措施。

所谓动态补偿,即在中断服务程序中对THx、TLx 重新置计数初值时,应将THx、TLx 从回0 溢出又重新从0 开始继续计数的值读出,并补偿到原计数初值中去进行重新设置。可考虑如下补偿方法: CLR EA ;禁止中断

MOV A,T L x ;读TLx 中已计数值 ADD A,#LOW ;LOW 为原低字节计数初值 MOV T L x,A ;设置低字节计数初值 MOV A,#HIGH ;原高字节计数初值送A ADDC A,T H x ;高字节计数初值补偿 MOV T H x,A ;置高字节计数初值 SETB EA ;开中断

28、动态读取运行中的定时器/计数值

在动态读取运行中的定时/ 计数器的计数值时,如果不加注意,就可能出错。这是因为不可能在同一时刻同时读取THx 和TLx 中的计数值。比如,先读TLx 后读THx,因为定时/ 计数器处于运行状态,在读TLx 时尚未产生向THx 进位,而在读THx 前已产生进位,这时读得的THx 就不对了;同样,先读THx 后读TLx 也可能出错。

一种可避免读错的方法是:先读THx,后读TLx,将两次读得的THx 进行比较;若两次读得的值相等,则可确定读的值是正确的,否则重复上述过程,重复读得的值一般不会再错。此法的软件编程如下:

RDTM: MOV A,THx ;读取THx 存A 中 MOV R0,TLx ; 读取TLx 存R0 中

CJNE A,THx,RDTM ;比较两次THx 值,若相等,则读得的值正确,否则重读 MOV R1,A ;将THx 存于R1 中

29、掉电及空闲模式

掉电方式

当PCON中的第二位PD为1时,进入掉电模式,不会执行任何指令,外部时钟停振,片内所有功能部件停止工作,如定时器,串行口,外部中断(部分增强型8051的外部中断可以工作),但片内RAM和SFR的内容保持不变。标准8051从掉电状态退出的惟一方法是硬件复位(部分增强型8051还可以通过外部中断来退出掉电状态),复位后,SFR被重新初始化,但RAM的内容不变。因此,若要使得8051在供电恢复正常后继续执行掉电前的程序,那就必须在掉电前预先把SFR中的内容保护到片内RAM,并在供电恢复正常后为SFR恢复到掉电前的状态。

当PCON的第一位IDEL为1时,进入空闲模式,CPU停止工作,不会执行任何指令,但中断、串行口和定时器可以继续工作。此时,CPU现场(即SP、PC、PSW和ACC等)、片内RAM和SFR中其他寄存器内容均维持不变。退出空闲模式有两种方法:

一、被允许中断的中断源发出中断请求;

二、硬件复位。30、看门狗应用

将喂狗操作(取反指令,如 CPL P1.0)分成两步,放在主程序和中断里执行。如将SETB P1.0放在主程序中,将CLR P1.0放在中断里,这样可以避免主程序跑飞,中断功能正常或者主程序正常,而中断跑飞的情况导致看门狗失效。

31、volatile作用

如果将将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。

一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。32、51准双向口读取:

只有1条指令:

MOV A,P1为读端口寄存器 有两条指令: MOV A,#0FFH MOV A,P1为读引脚

33、采用C语言和汇编语言混合编程是最佳的选择;

34、系统投入运行的最初时刻,应对系统进行自检和初始化。开机自检在初始化前执行,如果自检无误,则对系统进行正常初始化,通常包括硬件初始化和软件初始化两个部分。硬件初始化是指对系统中的各种硬件资源设定明确的初始状态,如对各种可编程芯片进行编程、对各I/O端口设定初始状态和为单片机的硬件资源分配任务等。软件初始化包括,对中断的安排、对堆栈的安排、状态变量的初始化、各种软件标志的初始化、系统时钟的初始化和各

种变量储存单元的初始化等。

35、按键连击速度一般为3-4次/s。

36、复合键利用两个以上按键同时按下时产生的按键效果,但实际情况下,不可能做到真正的“同时按下”,它们的时间差可以长达50ms左右,故当检测到有KEY1按键按下时,还要等待超过50ms,再判断是否还有其他按键按下,再解析按键。

37、数码管显示闪烁效果时,一般闪烁速度为1-4次/s。

38、大电流和高电压设备的启动和关闭都是由软件指令来完成,这些指令执行后,必然引起强烈的干扰,这些干扰不能算随机干扰,它们与软件完全相关;可以在最后才执行这些可能引起强烈干扰的I/O操作,之后立即进入睡眠状态,这样就不会干扰到CPU,等CPU醒来后,干扰的高峰也基本过去。

39、用积分时间为20ms整数倍的双积分型A/D转换方式,能有效地抑制50Hz工频干扰。40、掉电检测电路必须在电压下降到CPU最低工作电压之前就提出中断申请,提前时间为几百us到数ms,以便掉电中断程序进行掉电保护。

41、用定时器作看门狗:当为专职看门狗时,在主程序中周期性清0定时器计数值,以使定时器中断不能产生,当产生定时器中断时,表明看门狗溢出,此时应执行出错处理程序或者进行复位。当为兼职看门狗时,可以在定时器中断程序对计数值进行加1,若计数值大于某值时,表明看门狗溢出,而主程序中应周期性地对计数值进行清0。

42、中断中,冲突发生的条件:

1)某一资源为中断程序和主程序所使用;该资源可以为1个变量,也可以为1个数组或者1个缓冲区。

2)中断程序或主程序对该资源进行了写操作;

3)主程序不能用一条指令对资源完成读或者写操作。(这条不对,参考深入浅出AVR单片机P100的例子)

当这三个条件均满足时,即有可能发生资源冲突,导致程序偶然运行不正常。为了避免发生冲突,可以在主程序中先关中断,再对资源进行读或写,结束后再开中断。

当主程序对资源的访问比较费时,长期关中断可能影响系统的实时性;解决的办法是尽可能缩短关中断的时间,将一边访问,一边处理的工作方式改为集中访问,分批处理。如果是读该资源,则关中断迅速将该资源的内容转移到缓冲区,再开中断,然后再对缓冲区中的信息进行处理;如果是写该资源,则先边运算边写缓冲区,全部写好后再关中断,然后迅速将缓冲区中的内容复制到该资源中,边可以开中断了。

43、A/B*C的运算方案不如(A*C)/B的运算方案精度高。因此,应尽可能将出现偏差的运算往后排,先进行无偏差或偏差小的运算。在定点运算系统中,加减法只要不超限,是没有偏差的,乘法运算的结果会使字长增加,如双字节乘双字节,积为四字节,如果保留全部结果,则没有偏差的。乘法运算的结果会使字长增加,如双字节乘双字节,积为四字节,如果保留全部结果,则没有偏差;如果受字长限制,则要舍去低位字节,从而产生舍入偏差。除法几乎都是有偏差的能够刚好整除的情况是很少的。在浮点运算系统中,加减法由于要进行对阶操作,当两操作数的阶码相差较大时,绝对值大的数有可能将绝对值小的数淹没,使运算的结果仍为绝对值大的数,一点儿也看不出绝对值小的数对结果的影响。相比之下,浮点乘法和浮点除法引起的偏差就比较小,它们能够保持一个比较稳定的运算精度。另外,不管在定点系统中还是在浮点系统中,都要尽可能避免两个数值相近的数过早相减,因为他们都可能是近似值,相减以后,差的有效数值大大减少,必然带来更大的相对误差。经过后续运算之后,结果可能离真实值相差甚远。再有,尽可能不要用绝对值小的数作分母,否则引起的误差也是很大的。

44、要对软件标志位的使用进行说明;对于全局定义的软件标志,它有惟一的定义;对于局

部定义的软件标志,必须注明其有效范围。

45、软件理论已经证明:任何一个程序(除某些短小的子程序外)都存在错误(缺陷),人们可以通过合理的测试来证明它仍然存在错误,却无法证明它已经没有错误。软件测试应该把发现错误作为目的,而不能把“程序调通”作为目的。

1.P0口能驱动8个TTL电路意思: 8051单片机P0口驱动8个TTL电路的意思,TTL电路输入悬浮时相当于输入高电平,因此P0口输出高电平驱动TTL电路几乎不需输出电流。TTL电路输入为低电平时最少要释放1mA电流,因此P0口输出低电平时吸收的电流大于8mA。TTL输出高电平最大1.6mA,输出低电平时吸收的最大电流 16mA。51输出最好用低电平有效,推动PNP管,因为51复位后IO为高电平,如果用高电平有效推N管的话上电复位后会先让外部电路动做。

2.在51里,有一条指令没有写进书本,机器码为A5,执行操作:将下一个字节跳过而不管它是单字节指令还是双字节或三字节指令的一部分.如果反汇编工具不识别A5指令的话,你在A5以后的程序反汇编后就错乱无章.当成个数据,用db a5 即可

3.有些51系统容易复位,一般是电路设计上的问题。很多电路介绍的复位电路都是10u和8.2k,但是在实践过程中我们发现该电路在电源不稳时很容易复位,特别是附近有大干扰时,如继电器动作等。我建议使用22u和1k的复位电路,有许多电路改为该数值后就工作稳定了。当然,最好的办法还是使用专用复位电路或三极管电路,但是那样要增加成本和体积。

4.电路中的滤波电容一定要注意加上,最好每个芯片都再加一个约0.1uf的电容,这样对电路的稳定性很有好处。如果使用了看门狗电路,就有可能是软件问题,程序工作到某些环节时忘记了复位看门狗,结果计数满了就复位了。

5.如果在中断程序中改变了多字节类型的变量,那么中断程序以外的程序中(主程序,子函数),读写前要关中断,读写后再开中断。举一反三:

其他的数据类型也可能有这种影响。例如:长整型、浮点型。

上面的例子是中断里写,主程序中读。相反主程序写,中断里读也可能出错。

6.教你一招,别说我损。。

写一个测试代码,反复向EEPROM中的某几个不用的空位字节写入0x55,直到把它干到寿命终结不能写为止,如果按照10MS写一个字节计算的话,大约只需要20分钟就能干掉它。然后向这个芯片中烧入你的正常代码,当然了,这个代码中应该有一段上电检测EEPROM这几个字节的代码,先尝试向它写入0Xaa,然后再读出来看看是否写入成功,如果没写入则再来两次,如果始终不能写入,这当作检查通过,如果就判断为检查失败,这个时候代码要装着‘不知情’继续执行正确代码,下面的‘破坏’行为应该如何做就不要我讲了把? 破坏行为要装的掩蔽一点,例如调一段代码檫除FLASH的代码,嘿嘿,那对方肯定以为CHIP质量不好容易出现FLASH数据丢失,如果对方使用了AD什么的,可以偶尔人为让它波动大一点,这样对方一般只会怀疑PCB和硬件电路弄的不好,而不会想到是代码动手脚了,长久以后他的用户肯定也会认为他们的产品质量不好,你这个时候就可以向他的客户推广你的产品了。。

上电写EEPROM的次数要在你自己的产品质量承诺的寿命时间之内,否则你自己的产品也

可能增加维修。。

这个方法特别适合在外接单挣钱的工程师,你可能给了对方几个CHIP做测试,对方测试通过偏说不行,就是不给你余款,然后把CHIP拿去CRACK,妄想省掉这个钱,NND,让他们见鬼去把,俺这招已经对付了不少不良分子。。

7.AD键盘

8.防解密高招

高招, 解密

使用一些带内部晶振和内部EEPROM的单片机,如PIC16F913和ATMEGA8等,带内部晶振的单片机有一个寄存器OSCTUNE(或OSCCAL),这个是芯片厂家用来校准内部晶振的,范围从0-31,出厂时同型号的单片机这个寄存器的值是不一样.我们可以利用一些隐藏功能,将OSCTUNE寄存器的值存入内部的EEPROM中,开机时读取EEPROM的值,再与OSCTUNE的值相比较, 若二者相同系统正常工作,若不

相同则不正常工作.解密者将解密的程序烧写进单片机中后,会发大部分的芯片不能正常工作,因为他们不知道这个隐藏的功能.举例说明: 芯片为PIC16F913,这个厂品有4个按键(KEY0、KEY1、KEY2、KEY3),内部我们可以设定这样子一个隐藏的功能,如果KEY0与KEY1同时按下3秒钟以上,会将OSCTUNE寄存器存入单片机的EEPROM中。

开机复位后,读取EEPROM中的数据,与OSCTUNE寄存器相比较,若二者相同系统正常工作,若不相同则不正常工作。以上有三个重点:

1、对于OSCTUNE寄存器不要进行写的操作,只进行读的操作,因为写了一次以后,就一直是你写的这个数据的。

2、刚才介绍的KEY0、KEY1同时按下3秒钟这个功能,可不能让解密者(包括产品的用户)知道,当然大家可以用别的隐藏的功能。

3、单片机中的OSCTUNE寄存器(或OSCCAL)的值,同一种型号的单片机不是每一个都是一样的,有32个数据,也就是说32个芯片中有一个是与解密的单片机是一样的。这样子造成的后果是:解密者解密了你的程序以后,却发现有些单片机可以正常工作,可有些单片机不能正常工作,可以说是大部分的单片机不能正常工作。

不过需要注意一下:要是遇到强干扰把EEPROM中的数据改变了看客户怎么收拾你!

9.PIC16F887A中,要求SLEEP指令后的下一条指令为NOP;不知51和AVR的芯片是否需要注意这一点。经查,AVR的datasheet无此要求,可能是其唤醒时,存在启动延时。

10.中断随时随刻都有可能产生,故编写程序时,需要时刻注意中断的影响。

11.注意以下语句在某些编译器下,结果可能出错:

unsigned char a,b;

unsigned int sum;

a=0x80;

b=0x80;

sum=a+b;

12.编程序最重要是好维护。几个执行时间和程序的可读性比,和开发时间比,我认为是不用考虑的。为了几个机器周期而把程序搞得很复杂,是非常愚蠢的行为。可是很多人多乐此不疲啊。总体系统的算法是要考虑优化的问题的,这点我是赞同的。天天在技术上对着几行程序去优化,而导致开发速度减慢,是非常愚蠢的行为。

13.串口通信协议:引导码/识别码+长度+命令字+data+校验

通过引导码/识别码、长度、校验三步检测 每当出错则丢弃当前数据并还原接收状态和空间…………

14.当准备调试一块板的时候,一定要先认真的做好目视检查,检查在焊接的过程中是否有可见的短路和管脚搭锡等故障,检查是否有元器件型号放置错误,第

一脚放置错误,漏装配等问题,然后用万用表测量各个电源到地的电阻,以检查是否有短路,这个好习惯可以避免贸然上电后损坏单板。调试的过程中要有平和的心态,遇见问题是非常正常的,要做的就是多做比较和分析,逐步的排除可能的原因,要坚信“凡事都是有办法解决的”和“问题出现一定有它的原因”,这样最后一定能调试成功。

做一个硬件设计人员要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态,还有细心和认真等等。

上一篇:全日制自考助学人才培养模式的创新与实践下一篇:远去的老屋的散文