基于pic16f883芯片的汇编秒闪LED实验
2012-06-30 00:00
435 查看
器材:Microchip公司的控制芯片pic16f883、LED灯、电阻、导线、程序下载器、代码编译仿真软件MPLABV8.8
【电路连接原理图】:
【软件流程图】
本实验使用TIMER1模块 16位计数器溢出检测来完成周期性延时0.5S。
【数据计算】
计算方法如下:
计数频率:4MHz * 1/4 * 1/8 = 1/8 MHz
则计数周期为:8uS
由于代码中设置每延迟0.5S,LED引脚电位取反来切换状态。所以要使计数器累计计数0.5S:
计数器次数= 0.5S/8uS = 62500次
TMR1是16为计数器,所以计数起始值设为65536-62500 = 3036 (0x0BDC)。这样子仿真LED闪烁周期为:1.000036 S
【微调&校准周期】
于是将计数起点调整为0x0BDF,并且在循环里加入6个NOP(之前测试执行一条命令的周期为1uS),LED闪烁周期准确的为1 S。
【可重定位汇编语言】
实现代码如下:
来自HUST·EI seedclass2010 钟老师微机原理课实验,祝好!
【电路连接原理图】:
【软件流程图】
本实验使用TIMER1模块 16位计数器溢出检测来完成周期性延时0.5S。
【数据计算】
计算方法如下:
计数频率:4MHz * 1/4 * 1/8 = 1/8 MHz
则计数周期为:8uS
由于代码中设置每延迟0.5S,LED引脚电位取反来切换状态。所以要使计数器累计计数0.5S:
计数器次数= 0.5S/8uS = 62500次
TMR1是16为计数器,所以计数起始值设为65536-62500 = 3036 (0x0BDC)。这样子仿真LED闪烁周期为:1.000036 S
【微调&校准周期】
于是将计数起点调整为0x0BDF,并且在循环里加入6个NOP(之前测试执行一条命令的周期为1uS),LED闪烁周期准确的为1 S。
【可重定位汇编语言】
实现代码如下:
#include<p16f883.inc> UDATA_SHR COUNTER1 RES 1 COUNTER2 RES 1 RESET_VECTOR CODE 0X0000 NOP GOTO MAIN MAIN BANKSEL ANSEL ;设置PORTA为数字信号I/O CLRF ANSEL BANKSEL TRISA MOVLW B'00000000' ;PORTA全设为输出 MOVWF TRISA BANKSEL T1CON MOVLW B'10110101' ;配置timer1 ,1:8预分频(时钟信号进入TIMER1时有一个1:4分频) MOVWF T1CON BANKSEL OSCCON MOVLW B'11101100' ;时钟4M MOVWF OSCCON Delay ;延时,等待时钟振荡器稳定 INCFSZ COUNTER1,1 GOTO Delay INCFSZ COUNTER2,1 GOTO Delay BANKSEL PORTA LOOP COMF PORTA,1 ;PORTA I/O取反 CALL LOOP1 ;计数器计数,延时 GOTO LOOP LOOP1 BANKSEL TMR1H ;TMR1设置计数初值 MOVLW 0X0B MOVWF TMR1H BANKSEL TMR1L MOVLW 0XDF MOVWF TMR1L BANKSEL PIR1 LOOP2 ;TMR1溢出检测 BTFSS PIR1,0 GOTO LOOP2 BCF PIR1,0 NOP NOP NOP NOP NOP NOP RETURN END
来自HUST·EI seedclass2010 钟老师微机原理课实验,祝好!
相关文章推荐
- 实验一 基于NIOSII的LED控制系统
- Nios II之LED实验(SDRAM+EPCS4配置)————基于Altera的DE0开发板
- 我的第一个led实验--基于arm6410
- 【led】djyos下基于tq2440开发板上跑马灯实验
- 基于Wolf32F031 自由评估板的LED Control实验硬件原理及软件API使用方法(适用于STM32F030/031)
- cc2530实验小项目-循环控制LED灯 (基于ZigBee协议)
- 基于fl2440开发板的led实验
- 基于实验开发板的按键处理与LED显示
- S3C2440 LED驱动实验-基于FES2440
- S5PV210进行LED流水灯实验总结(基于九鼎科技开发板)
- 基于学生信息录入排序分割实验的总结
- 基于ARM_contexA9 led驱动编程
- 实验:实现基于MYSQL的FTP虚拟用户
- cc2530 串口实验--控制led灯
- 基于proteus的51单片机仿真实例十七、用不同的数据类型控制LED灯的闪烁频率
- BeagleBone Black板第四课:简单LED控制实验
- TI CC2530基础实验(普通GPIO操作——点亮led灯)
- Linux系统移植实验---LED驱动的移植
- 【iCore1S 双核心板_ARM】例程十:SYSTICK定时器实验——定时点亮LED
- 策略路由实验一:基于应用的策略路由