pic单片机闪灯实验(Hello World)实验报告

发布者:精品古钱斋最新更新时间:2015-01-07 来源: 51hei关键字:pic单片机  闪灯实验  实验报告 手机看文章 扫描二维码
随时随地手机看文章

1.  实验目的

A,学习汇编语言编程

B,学习使用编程软件和下载器在单片机上编程

C,学习学习嵌入式的方法

2.  任务要求
用汇编语言编程实现LED灯闪烁

3.  实验器材
单片机PIC16F886一片、LED灯一只、电阻任选、下载器(及相关的线)一个

4.  实验方案

 

 

 

图 1 硬件设计图

 

 

图 2 软件流程图

5.  调试过程
先使LED灯亮,再写延时程序,最后实现闪灯。最后的结果是可以实现闪灯,但是闪灯的频率和亮灭时间比例还不能精确控制。

6.  实验现象分析
奇怪的现象:(还没有解决)

1,只写让LED灯亮的程序,即

LIST p=16f886

INCLUDE p16f886.inc

ORG 0x00

BANKSEL TRISC

CLRF TRISC

CLRF STATUS

MOVLW B'00001111'

MOVWF PORTC

END

时,在PICKIT 2中选择5V on ,测得Vdd=4.2V,万用表直流电压档测得PIN RC3 是2.7V ,示波器测时发现RC3引脚是频率是50Hz,幅值是2.7V的正方波。LED可以一直亮,但是不是预期的一直置位。还没有找到原因。

2,如果采用延时、翻转如此循环,即循环部分分别为

A.loop call delay

comf portc,1

goto loop

B.loop call delay

call delay

call delay

call delay

call delay

comf portc,1

goto loop

C.loop call delay

call delay

call delay

call delay

call delay

call delay

call delay

call delay

call delay

call delay

 
comf portc,1

goto loop

时,测到的实际频率都在0.48Hz左右(采用的时候总周期是默认的4MHz),然而一个循环中delay调用次数越多,灯亮的时间越短,灭的时间越长。当时钟频率选择127kHz时,调用3个delay时就已经不会亮了。

3,如果采用清零、延时、置位、延时的循环,发现LED每次亮灭的时间基本相同,但是,每亮灭五次后,会有一次灯灭的时间稍微长一点。改变时钟频率后也是这样。猜测是delay函数写得有问题。

 
 
这三个现象计划的解决方法是单步调试和仿真。

 
(写完这份报告时,杜航同学提醒说我在delay中用到了decfsz函数,而decfsz函数的操作范围只有0~127,而我设置的却是0ffh,已超出该范围。)

之前曹航用127kHz的时钟,假设四个时钟周期是一个指令周期,假设按照之前以为的2^8*2^8*2*2,周期在8s左右,实验出来的结果却在2s左右。按照杜航的说法,实际的一个周期内指令一共2^7*2^7*2*2,则计算得到灯的周期为2.06秒,实验时计算到的现象是亮灯周期2s左右,比较符合。但是具体是不是这样还要进一步验证。

 
额,刚刚把delay中的0ffh改成07fh发现灯明显闪烁快了。所以之前的假设不成立。

 
 
 
 
 
附:

INCLUDE P16F886.INC
org   000h     
nop            
BANKSEL OSCCON
BCF OSCCON,4
BCF OSCCON,5
BSF OSCCON,6
BANKSEL TRISC
movlw   00h      
movwf   TRISC   
BANKSEL PORTC  
movlw  000h      
movwf  PORTC  
 
loop
CALL delay
BSF PORTC,3
CALL delay
BCF PORTC,3
goto loop

;-------------------------廷时子程序----------------------------
delay                       ;子程序名,也是子程序入口地址
       movlw   0ffh          ;将外层循环参数值FFH经过W
       movwf   20h          ;送入用作外循环变量的20H单元
lp0    movlw   0ffh          ;将内层循环参数值FFH经过W
       movwf   21h           ;送入用作内循环变量的21H单元
lp1    decfsz   21h,1         ;变量21H内容递减,若为0跳跃
           goto     lp1           ;跳转到LP1处
       decfsz    20h,1         ;变量20H内容递减,若为0跳跃
       goto     lp0           ;跳跃到LP0处
return

end

关键字:pic单片机  闪灯实验  实验报告 引用地址:pic单片机闪灯实验(Hello World)实验报告

上一篇:PIC单片机定时器初值计算方法及几种周期小结
下一篇:PIC32MX220F032B学习笔记之I/O口

推荐阅读最新更新时间:2024-03-16 13:50

PIC单片机有什么特点和优势?
简介:PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。 PIC系列单片机有什么优势? 自从我95年接触PIC单片机以来,便一直热衷于这种单片机的开发与应用。有不少朋友问我:PIC到底有什么优势?也许你也会有这样的疑问,所以我在这里略谈几点自己的看法。 1) PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。就实际而言,不同的应用对单片机功能和资源的需求也是不同的。比如,一个摩托车的点火器需要一个I/O较少、RAM及程序存储空间不大、可靠性较高的小型单片机,若采用40脚且功能强大的单片
[单片机]
PIC单片机AD转换LED显示程序
;* 单片机 模拟量进行模/数转换,并用 LED 显示出来我们可以看到转换 ;* 结果,0位AD当做8位来用了,利用 单片机 片内硬件资源TMR0和预 分频器 , ;* 为ADC提供定时启动信号, A/D 转换的时钟源选用了系统 周期 的8倍,选 ;* 用了 电源 电压 VDD和VSS作为基准电压,软件方式查询其中断标志位ADIF. ;************************************************************ LIST P=16F877 ;列表伪指令 INCLUDE P16F877.INC ;把包含文件含入源程序 ;******
[单片机]
PIC单片机设定配置字信息
;******************************************************************* ; SAMPLE.ASM ; 8x8 Software Multiplier for 16Cxxx Family ;******************************************************************* ; ; The 16 bit result is stored in 2 bytes ; ; Before calling the subroutine mpy , the multiplier shoul
[单片机]
简述什么是PIC单片机
PIC 单片机是一个小的计算机 PIC单片机有计算功能和记忆内存像CPU并由软件控制允行。然而,处理能力—存储器容量却很有限,这取决于PIC的类型。但是它们的最高操作频率大约都在20MHz左右,存储器容量用做写程序的大约1K—4K字节。 时钟频率与扫描程序的时间和执行程序指令的时间有关系。但不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变(1*)。如果是同样的体系结构,时钟频率较高的处理能力会较强。 这里用字来解释程序容量。用一个指令(2*)表示一个字。通常用字节(3*)来表示存储器(4*)容量。一个字节有8位,每位由1或0组成。PIC16F84A单片机 的指令由14位构成。当把1K个子转换成位为:1
[单片机]
PIC单片机开发中PICC编译环境的应用
PICC基本上符合ANSI标准,但是不支持函数的递归调用,其主要原因是PIC单片机特殊的堆栈结构。PIC单片机中的堆栈是硬件实现的,其深度已随芯片固定,无法实现需要大量堆栈操作的递归算法;另外在PIC单片机中实现软件堆栈的效率也不是很高。为此,PICC编译器采用一种“静态覆盖”技术,以实现对C语言函数中的局部变量分配固定的地址空间。经这样处理后产生出的机器代码效率很高。当代码量超过4KB后,C语言编译出的代码长度与全部用汇编代码实现的差别已经不是很大( 10%),当然前提是在整个C代码编写过程中需时时注意所编写语句的效率。   2 PICC中的变量   PICC中的变量类型和标准C语言一样,这里不再重复。为了使编译器产生最高效
[单片机]
0802LCD 4位显示程序 PIC单片机C语言程序
#include xc.h #include pic.h //#include head.h #define uchar unsigned char #define uint unsigned int #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT ena
[单片机]
PIC单片机学习方法
为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评,提出宝贵的意见. 2.PIC单片机的概述 PIC16F616是一款14引脚、8位的CMOS单片机.采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率. PIC16F616 这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外
[单片机]
一种基于PIC单片机的便携式磁记忆检测仪
   引言   金属构件和零部件发生损坏的主要原因,是各种微观和宏观机械应力集中导致疲劳失效,其基本特征表现为材料在低于静强度极限的交变应力持续作用下,生成多种类型的微观内部缺陷,并逐渐演化为宏观裂纹,裂纹扩展最终导致结构破坏。因此,进行疲劳分析,有效评价应力变形状况,测定未来裂缝发展的位置、大小和方向,成为评价金属零部件与构件结构强度和可靠性的一个重要依据。为了及时准确的找出最大机械应力变形区域,20世纪90年代后期,以杜波夫为代表的俄罗斯学者率先提出一种崭新的诊断技术—金属磁记忆检测。本文采用PIC单片机,设计了高性价比的便携式磁记忆检测仪,具有低成本、低功耗和快速检测等特点,可以满足各种场合,特别是难以到达部位的应力集中区
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved