电子时钟的设计剖析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 数字电子时钟的设计 电子时钟各大模块 数码管动态显示 按键控制时钟 串口修改时钟 时钟信号的产生 一、动态显示模块 横杠处理举措 1、汇编语言处理方法 2、C语言处理方法 二、键处理模块 实际中,由于按键的弹片接触的时候,并不是一接触就紧紧的闭合,它还存在一定的抖动,尽管这个时间非常的短暂,但是对于执行时间以微秒为单位的单片机来说它太漫长了。 在程序中通过检测连接键盘的I/O口电平,即可以知道按键是否被按下,从而做出相应的响应。 常规按键处理程序方式 键盘判定执行流程 键功能0(修改热键) 键功能1(移位选择) 键功能2(执行加1) 键功能3(清零显示单元) C51 指针概念 1、指针印象 指针变量的一般形式为: 类型说明符 *变量名; 其中“*”表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。 例如: uchar *TEMP; TEMP就是一个指针变量,它的值表示了某个无符号字符型数据变量的地址。或者说TEMP指向一无符号字符型数据变量。 使用语句: TEMP=0x30; 赋值0x30给指针型变量TEMP,也就是TEMP指向了地址0x30,假设地址30H里面存有数据。 *TEMP的值指向了地址30H的数值0Xfe。 汇编语言中的R0就相当于C语言中的TEMP,而@R0和*TEMP表达的是相同的意思。同汇编语言的间接寻址一样,不仅可以取出数值,而且可以存入数据。 例如使用指令: *TEMP=0x78; 就上将数值0x78存放到指针变量TEMP指向的地址 2、指针变量的引用及初始化 指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。指针变量的赋值只能赋予地址,决不能赋予任何其它数据。在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址,所以上面的例子不能运用于实际程序之中。 指针变量有两个操作符: 取地址运算符。 * 指针运算符 C语言中提供了地址运算符来表示变量的地址,其一般形式为: 变量名; 如a表示变量a的地址,b表示变量b的地址。 uchar a; uchar *p; p=a; uchar a; uchar *p=a; 上面两段程序是等价的,因为在初始化阶段: uchar *p=a; 等价于 uchar *p; p=a; 但在程序运行过程中,不能采用: *p=a; 因为*p表示的是一个数值,而不能将地址传输给数值。 3、指针的初始化 4、 指针和数组 一个数组是由连续的一块内存单元组成的。一个数组也是由各个数组元素(下标变量)组成的。每个数组元素按其类型不同占有几个连续的内存单元。一个数组元素的首地址也是指它所占有的几个内存单元的首地址,同时C语言规定数组名就是整个数组的地址。 例如,在程序中使用了数组 uchar data dbuf[8]; dbuf[0]的地址就是整个数据的地址。 uchar *p; /*定义p为指向字符型型变量的指针*/ p=dbuf[0] /*首元素地址赋值*/ 也可以写为: P= dbuf /*数组名直接赋值*/ 把dbuf[0]元素的地址赋给指针变量p。也就是说,p指向数组dbuf的第0号元素。 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。 引入指针变量后,就可以用两种方法来访问数组元素了。如果p的初值为dbuf [0],则:p+i和dbuf+i同为dbuf [i]的地址,或者说它们是指向dbuf数组的第i个元素 *(p+i)或*(dbuf+i)就是p+i或dbuf+i所指向的数组元素,即dbuf [i]。 例如:*(p+5)或*(dbuf+5)为dbuf [5]的值。 5、指针作为函数参数 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。 void KEY2_FUNCTION() { uchar *TEMP; if(FLASH==1) { TEMP=dbuf+SHIFT; ADD1(TEMP); } } uchar ADD1(uchar *str) { uchar TEMP1; TEMP1=((*(str+1)0X0F)*10+(*(str)0X0F))+1; *(str+1)=TEMP1/10; *(str)

文档评论(0)

麻将 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档