
16F690二进制LED时钟汇编程序实战与详解

本文档主要介绍了一个针对Microchip PIC16F690单片机的二进制LED时钟汇编程序设计。该程序是为了解决在该型号的微控制器上实现一个实时显示时间的时钟应用。以下是关键知识点的详细解释:
1. **硬件配置**:
- 使用了PIC16F690单片机,它具有内部振荡器( Oscillator Configuration, OSCCON)和可编程定时器/计数器(Timer/Counter)。
- 振荡器被设置为250kHz,通过`bcf OSCCON, 6`指令调整了POSTSC(Postscaler)。
- 为了优化程序性能,选择了低功耗模式,并关闭了看门狗定时器(WDT)、电源管理(PWRTE)、空闲引脚使能(MCLRE)、晶振比较器(CP)、上电复位中断(IESO)、方波发生器(FCMEN)。
2. **定时器配置**:
- Timer0被配置为由处理器时钟源提供,通过`movlw b'00000111'`设置了最大预分频值到1:8,提高了精度。
- 激活全局中断(INTCON, 7)并设置Timer0中断请求线(RABIE),以便处理时间更新。
3. **GPIO初始化**:
- 清零PORTC寄存器,将PORTC设置为输出模式,以便驱动LED显示。
- 初始化数字输入输出(ANSEL)寄存器,用于控制LED连接的IO口功能。
4. **主程序流程**:
- 主循环开始于`loop`标签,首先将小时数`0aH`写入`count1`,然后调用`convert`函数转换十进制到二进制,再调用`sub_transmit`函数显示结果。
- 然后,设置一个50毫秒的延时,使用`delay50ms`子程序。
- `TMR0`作为定时器,计数满后会触发中断,程序通过`T0IF`标志判断这一事件。
5. **中断处理**:
- 当Timer0溢出时,程序进入`lp1`标签,检查`T0IF`标志,如果已溢出,则清除该标志、更新`TMR0B`寄存器,并继续执行下一个时间单位的显示。
6. **子函数**:
- `convert`函数用于将十进制数转换为二进制,具体实现未在提供的代码中给出。
- `sub_transmit`可能是用于发送二进制数据到LED的函数,也可能涉及到位操作或寄存器读写。
整个程序结构清晰,实现了基于定时器的实时二进制时钟功能,适用于教学、学习或小型嵌入式系统开发。通过阅读和理解这份代码,开发者可以了解到如何在PIC16F690上利用汇编语言进行基本的硬件配置、定时器管理以及GPIO操作。这对于想要深入学习和实践单片机编程的读者来说是一份有价值的学习资料。
相关推荐










lanying17081352353
- 粉丝: 2
最新资源
- TOP系列电源设计软件:提升电源设计的实用工具
- C#编码规则与软件开发规范详解
- 构建留言本:vs2005与sql2000的三层开发实践
- 网页Flash拍照功能的JSP源码实现
- 掌握Window游戏编程:大师技巧4-10章节详解
- ASP技术实现无刷新投票系统原理及防刷票方法
- Linux内核内存管理与缓冲机制详解
- C语言编程百例之第三部分源代码解析
- Linux系统下C语言编程环境的搭建与应用
- 考研数据结构1800题Word版(含答案)
- 掌握SQL:解决实际练习题的挑战
- 实现自定义软键盘的JS源代码介绍
- VC++实现WiFi网络查询与连接示例代码解析
- 新手必备!Java文件操作简易代码示例
- 网络工程师必备电脑知识速成指南
- VC2005环境下的Win32程序开发实例详解
- 银行内部培训实用金融学习资料
- 挑战自我CAD绘图技能的高级练习资料
- 基于VS2005和SQL2005的购物管理系统开发教程
- VB读取Excel文件的类与实例演示
- 初学者指南:VC实现的学生信息管理系统
- Java实现的FC游戏模拟器使用教程
- C#打地鼠练习:类定义与TIMER控件应用
- 飞鱼网页标尺:精准测量网页元素尺寸工具