文档简介
第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 1 第十章 I c c A V R C语言的应用, 本章例子程序编号为对应第九章I A R A V R C语言的例子程序编号, 这些例子 程序硬件接口见 ; 第十章编号1 0 . 5 . 1 - 9 为新增例子程序, 这些例子程序均在 S L - A V R 开发实验器上验证通过 / / 第十章例子 1 0 . 3 . 1 读/ 写口 # i n c l u d e v o i d m a i n ( v o i d ) u n s i g n e d c h a r a c h a r ; D D R B = 0 x F F ; D D R D = 0 x 0 0 ; P O R T D = 0 x 0 0 ; f o r ( ; ; ) a c h a r = P I N D ; P O R T B = a c h a r ; / / 第十章例子 1 0 . 3 . 2 延时函数 # i n c l u d e / * 定义 8 5 1 5 * / v o i d d e l a y ( i n t d e l a y V a l u e ) i n t i ; f o r ( i = 0 ; i = 6 0 ) t i m e 1 - = 6 0 ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 40 t i m e 0 + + ; i f ( t i m e 0 = 2 4 ) t i m e 0 - = 2 4 ; h e x t o b c d ( ) ; d i s p l a y ( ) ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * T 1 溢出中断 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d t i m e r 1 ( v o i d ) f l a g = 1 ; t i m e 2 + + ; T C N T 1 = 0 x 8 5 e e ; / / 第十章例子 1 0 . 5 . 8 ) c y m o m e t e r 单量程频率计测量范围 0 - 9 9 9 9 9 9 H Z / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * h t t p : / / w w w . s l . c o m . c n 双龙电子公司- - - - 频率计演示程序( I C C A V R ) 作者詹卫前 1 学习定时器 T 1 捕捉( 捕获) 中断的使用 2 学习频率计的设计方法 频率计编程 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 41 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / # i n c l u d e # i n c l u d e # p r a g m a i n t e r r u p t _ h a n d l e r t i m e r 0 : 8 # p r a g m a i n t e r r u p t _ h a n d l e r t i m e r 1 : 4 e x t e r n v o i d d e l a y _ m s ( u n s i g n e d i n t n ) ; / / 引用外部函数 # p r a g m a d a t a : c o d e / * 七段译码字形表 * / c o n s t u n s i g n e d c h a r t a b e l = 0 x 3 f , 0 x 0 6 , 0 x 5 b , 0 x 4 f , 0 x 6 6 , 0 x 6 d , 0 x 7 d , 0 x 0 7 , 0 x 7 f , 0 x 6 f , 0 x 7 7 , 0 x 7 c , 0 x 3 9 , 0 x 5 e , 0 x 7 9 , 0 x 7 1 ; # p r a g m a d a t a : d a t a / * 显示缓冲区 * / u n s i g n e d c h a r l e d b u f f = 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 3 f ; u n s i g n e d l o n g c o u n t ; / / 频率测量计数变量 u n s i g n e d i n t t i m e c o u n t ; / / 频率测量闸门控制变量 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 初始化 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d p o r t _ i n i t ( v o i d ) M C U C R = 0 x 0 0 ; D D R D = 0 x 3 f ; D D R B = 0 x f f ; P O R T D = 0 x f f ; P O R T B = 0 x f f ; T I M S K = 0 x 0 a ; / / 开放 T 0 溢出中断和 T 1 捕捉中断 T C C R 0 = 0 x 0 3 ; T C C R 1 A = 0 x 0 0 ; T C C R 1 B = 0 x c 0 ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 42 T C N T 0 = 0 x 8 3 ; t i m e c o u n t = 1 0 0 0 ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 六路动态扫描显示电路 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d d i s p l a y ( v o i d ) u n s i g n e d c h a r i ; f o r ( i = 0 ; i 6 ; i + + ) P O R T B = l e d b u f f i ; / / 将显示缓冲区数据送 P O R T B 口 P O R T D = ( 1 i ) ; / / 开始显示 d e l a y _ 1 m s ( ) ; / / 每一位显示保持一定时间 P O R T D | = ( 1 i ) ; / / 关闭显示 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 将 c o u n t 十六进制数据转换为 L E D 七段码 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d h e x t o b c d ( v o i d ) u n s i g n e d c h a r i , t e m p ; f o r ( i = 0 ; i 9 9 9 9 9 9 ) l e d b u f f 0 | = 0 x 8 0 ; c o u n t = 0 ; t i m e c o u n t = 1 0 0 0 ; S E I ( ) ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 44 T C N T 0 = 0 x 8 4 ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * T 1 捕捉中断完成脉冲计数 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d t i m e r 1 ( v o i d ) c o u n t + + ; / / 第十章例子 1 0 . 5 . 9 ) I 2 C . c 以单字节模式访问 I 2 C总路线器件 A T 2 4 C 0 2的例子程序 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * h t t p : / / w w w . s l . c o m . c n 双龙电子公司- - - - I 2 C 总线演示程序( I C C A V R ) 作者詹卫前 1 以访问 A T 2 4 C 0 2 为例 2 S D A P O R T A . 0 3 S C L : P O R T A . 1 使用注意1 应包含头文件 s l a v r . h 2 在工程选项中的 A d d i t i o n a l L i b 中填入 s l a v r 使用编译器使用附加库文件 l i b s l a v r . a * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / # i n c l u d e # i n c l u d e / * 七段译码字形表 * / # p r a g m a d a t a : c o d e c o n s t u n s i g n e d c h a r t a b e l = 0 x 3 f , 0 x 0 6 , 0 x 5 b , 0 x 4 f , 0 x 6 6 , 0 x 6 d , 0 x 7 d , 0 x 0 7 , 0 x 7 f , 0 x 6 f , 0 x 7 7 , 0 x 7 c , 0 x 3 9 , 0 x 5 e , 0 x 7 9 , 0 x 7 1 ; # p r a g m a d a t a : d a t a 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 45 / * 显示缓冲区 * / u n s i g n e d c h a r l e d b u f f = 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 0 0 , 0 x 0 0 ; u n s i g n e d c h a r a t 2 4 _ a d d , a t 2 4 _ d a t a ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 端口初始化 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d p o r t _ i n i t ( v o i d ) D D R D = 0 x 3 f ; D D R B = 0 x f f ; P O R T D = 0 x f f ; P O R T B = 0 x f f ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 六路动态扫描显示电路 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d d i s p l a y ( v o i d ) u n s i g n e d c h a r i ; i = a t 2 4 _ d a t a % 1 6 ; l e d b u f f 0 = t a b e l i ; i = a t 2 4 _ d a t a / 1 6 ; l e d b u f f 1 = t a b e l i ; i = a t 2 4 _ a d d % 1 6 ; l e d b u f f 2 = t a b e l i ; i = a t 2 4 _ a d d / 1 6 ; l e d b u f f 3 = t a b e l i ; f o r ( i = 0 ; i 6 ; i + + ) 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 46 P O R T B = l e d b u f f i ; / / 将显示缓冲区数据送 P O R T B 口 P O R T D = ( 1 i ) ; / / 开始显示 d e l a y _ 1 m s ( ) ; / / 每一位显示保持一定时间 P O R T D | = ( 1 i ) ; / / 关闭显示 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 主程序功能演示了读写 A T 2 4 C 0 2 的过程 说明1 键盘上 0 F 键用于输入地址或数据 S H I F T 键用于切换状态 2 上电复位后按数字键只可以修改地 址, 程序自动显示 A T 2 4 C 0 2 单元内容 3 按一次 S H I F T 键最高位 L E D 小数点亮 此时可以修改数字再按一次 S H I F T 键 程序将修改后的数字写入 A T 2 4 C 0 2 然 后回到上电复位后的状态 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d m a i n ( v o i d ) u n s i g n e d c h a r k e y 1 , k e y 2 ; u n s i g n e d c h a r i n d e x , f l a g ; a t 2 4 _ a d d = 0 ; a t 2 4 _ d a t a = 0 ; i n d e x = 0 ; f l a g = 0 ; p o r t _ i n i t ( ) ; / / 端口初始化 w h i l e ( 1 ) k e y 1 = s c a n _ k e y ( ) ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 47 i f ( k e y 1 ! = 0 x 7 f ) d o k e y 2 = s c a n _ k e y ( ) ; / / 检查按键释放 d i s p l a y ( ) ; w h i l e ( k e y 1 = = k e y 2 ) ; i f ( f l a g ! = 0 x 0 0 ) / / S H I F T 键切换数据和地址修改 W r i t e 2 4 c 0 2 ( f l a g = 0 x 0 0 ; e l s e f l a g = 0 x 8 0 ; l e d b u f f 5 = 0 x 0 0 f l a g ; i n d e x = 0 ; e l s e s w i t c h ( i n d e x ) c a s e 0 : i f ( f l a g = = 0 x 0 0 ) k e y 2 = a t 2 4 _ a d d a t 2 4 _ a d d = k e y 2 | ( k e y 1 4 ) ; e l s e k e y 2 = a t 2 4 _ d a t a a t 2 4 _ d a t a = k e y 2 | ( k e y 1 4 ) ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 48 i n d e x = 0 1 ; b r e a k ; c a s e 1 : i f ( f l a g = = 0 x 0 0 ) k e y 2 = a t 2 4 _ a d d a t 2 4 _ a d d = k e y 2 | ( k e y 1 e l s e k e y 2 = a t 2 4 _ d a t a a t 2 4 _ d a t a = k e y 2 | ( k e y 1 i n d e x = 0 0 ; b r e a k ; i f ( f l a g = = 0 x 0 0 ) R e a d 2 4 c 0 2 ( d i s p l a y ( ) ; / / 第十章例子 1 0 . 5 . 9 A ) A T 2 4 C 0 2 . c 调用库函数对 A T 2 4 C 0 2进行读写可以连续多字节读写 / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * h t t p : / / w w w . s l . c o m . c n 双龙电子公司- - - - I 2 C 总线演示程序( I C C A V R ) 作者詹卫前 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 49 1 以访问 A T 2 4 C 0 2 为例 2 S D A P O R T A . 0 3 S C L : P O R T A . 1 使用注意1 应包含头文件 s l a v r . h 2 在工程选项中的 A d d i t i o n a l L i b 中填入 s l a v r 使用编译器使用附加库文件 l i b s l a v r . a * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / # i n c l u d e # i n c l u d e / * 七段译码字形表 * / # p r a g m a d a t a : c o d e c o n s t u n s i g n e d c h a r 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 50 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 51 # p r a g m a d a t a : d a t a / * 显示缓冲区 * / u n s i g n e d c h a r l e d b u f f = 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 3 f , 0 x 0 0 , 0 x 0 0 ; u n s i g n e d c h a r a t 2 4 _ a d d , a t 2 4 _ d a t a ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I 2 C 总线写一个字节 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d i 2 c _ W r i t e ( u n s i g n e d c h a r W d a t a , u n s i g n e d c h a r R o m A d d r e s s ) S t a r t ( ) ; W r i t e 8 B i t ( 0 x a 0 ) ; T e s t A c k ( ) ; W r i t e 8 B i t ( R o m A d d r e s s ) ; T e s t A c k ( ) ; W r i t e 8 B i t ( W d a t a ) ; T e s t A c k ( ) ; S t o p ( ) ; d e l a y _ m s ( 1 0 ) ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * I 2 C 总线读一个字节 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / u n s i g n e d c h a r i 2 c _ R e a d ( u n s i g n e d c h a r R o m A d d r e s s ) u n s i g n e d c h a r t e m p ; S t a r t ( ) ; W r i t e 8 B i t ( 0 x a 0 ) ; T e s t A c k ( ) ; W r i t e 8 B i t ( R o m A d d r e s s ) ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 52 T e s t A c k ( ) ; S t a r t ( ) ; W r i t e 8 B i t ( 0 x a 1 ) ; T e s t A c k ( ) ; t e m p = R e a d 8 B i t ( ) ; N o A c k ( ) ; S t o p ( ) ; r e t u r n t e m p ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 端口初始化 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d p o r t _ i n i t ( v o i d ) D D R D = 0 x 3 f ; D D R B = 0 x f f ; P O R T D = 0 x f f ; P O R T B = 0 x f f ; / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 六路动态扫描显示电路 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / v o i d d i s p l a y ( v o i d ) u n s i g n e d c h a r i ; i = a t 2 4 _ d a t a % 1 6 ; l e d b u f f 0 = t a b e l i ; i = a t 2 4 _ d a t a / 1 6 ; l e d b u f f 1 = t a b e l i ; 第十章 IccAVR C 语言例子程序源程序 广州天河双龙电子有限公司 http:/WWW.SL.COM.CN 5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南新乡市第四人民医院招聘护理和药剂师3人参考模拟试题及答案解析
- 2025年金华永康市西城街道办事处工作人员招聘1人备考题库附答案详解(b卷)
- 2025南平武夷矿产资源发展有限公司劳务派遣员工三次社会招聘10人备考考点试题及答案解析
- 2025陕西宝鸡市凤翔区招聘社区专职人员29人备考题库含答案详解(培优a卷)
- 2025山东济南新旧动能转换起步区社工招聘30人备考题库附答案详解(基础题)
- 抚州市数字经济投资集团有限公司高素质人才引培招聘补充考试笔试备考试题及答案解析
- 2025福建浦盛产业发展集团有限公司食品生产线招聘1人参考考点题库及答案解析
- 儿科专用应急物资储备与调配方案
- 2025年甘肃省白银市靖远县东升镇选聘专业化管理村文书备考题库附答案详解(精练)
- 2026福建省选调生选拔工作备考题库含答案详解(预热题)
- 贵州国企招聘:2025贵州凉都能源有限责任公司招聘10人备考题库完整答案详解
- 航空油料员岗位招聘考试试卷及答案
- 并购居间协议书范本
- 谢鸿飞民法典合同编课件
- Unit5Whatanadventure!StartingoutListening课件-高中英语外研版
- 2025国家外汇管理局中央外汇业务中心校园招聘笔试历年参考题库附带答案详解
- 2025吉林吉林市舒兰市总工会招聘工会社会工作者8人考试笔试参考题库附答案解析
- 第06讲阅读表达(复习讲义)
- 工业机器人离线编程与仿真【项目五 】教案
- 风光摄影讲座课件
- 冬季消防车行车安全培训课件
评论
0/150
提交评论