天大自动化智能装置与设计实验报告Word文档下载推荐.docx
《天大自动化智能装置与设计实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《天大自动化智能装置与设计实验报告Word文档下载推荐.docx(17页珍藏版)》请在冰点文库上搜索。
MOVWFPORTC;
C端口RC7灯亮
BCFSTATUS,C;
进位标志位清零,防止循环时有两个灯在亮。
DELAY
MOVLW0FFH
MOVWFGENR1
LOOP1
MOVLW90H
MOVWFGENR2
LOOP2
DECFSZGENR2,F
GOTOLOOP2
DECFSZGENR1,F
GOTOLOOP1;
延时大致为256*144*2.5*10-6
RRFPORTC,1
BTFSCSTATUS,C
RRFPORTC,1;
LED灯状态右移,若移到C标志位,则再多移一下
GOTODELAY
END
2、提高内容:
利用RB0口接的按键控制RC口连接的LED灯,每按一次键切换一盏灯,从RC7到RC0分别点亮,按键使用查询方式检测。
实验内容:
#INCLUDE<
GENR2EQU21H
MOVLW01H
MOVWFTRISB;
B口RB0为输入,按键输入
MOVWFTRISC
CLRFPORTB
MOVWFPORTC
BCFSTATUS,C
LOOP
BTFSSPORTB,0;
检测是否RB0按下,有则说明有按键
GOTOLOOP
MOVLW20H
LOOP3
GOTOLOOP3
GOTOLOOP2;
定时与上例相同,唯一区别是GENR2从144改为32
BTFSCPORTB,0;
检测RB0是否弹起,一次完整按键应该是按下并弹起
GOTOLOOP1
实验二:
PIC单片机定时/计数器的功能及使用方法
1、使用Timer0定时器按查询方式设置500毫秒定时,完成LED灯的轮流点亮。
COUNT1EQU20H
MOVLW07H
MOVWFOPTION_REG;
设置分频比为1:
256
CALLDELAY
BCFINTCON,2;
Timer0中断标志位清零
MOVLW0AH
MOVWFCOUNT1
MOVLW3DH
MOVWFTMR0;
Timer0延时10-6*256*(256-61)*10≈0.5s
BTFSSINTCON,2;
查询Timer0中断标志位是否为1,为1则完成定时
DECFSZCOUNT1,F
RETURN
BCFINTCON,2
MOVWFTMR0
2、使用Timer1定时器按查询方式设置1秒定时,完成LED灯的轮流点亮。
MOVLW31H
MOVWFT1CON;
Timer1打开,预分频比1:
8
BCFPIR1,TMR1IF;
清除Timer1中断标志位
MOVLW02H
MOVLW0CH
MOVWFTMR1H
MOVLW22H
MOVWFTMR1L;
Timer1延时10-6*8*(65536-3106)*2≈1s
BTFSSPIR1,TMR1IF;
查询Timer1中断标志位是否为1,为1则完成定时
BCFPIR1,TMR1IF
MOVWFTMR1L
3、使用Timer2定时器按查询方式设置500毫秒定时,完成LED灯的轮流点亮。
MOVLW7FH
MOVWFT2CON;
Timer2定时器打开,预分频与后分频均为1:
16
BCFPIR1,TMR2IF;
Timer2中断标志位清零
MOVWFTMR2;
Timer2延时10-6*16*16*(256-61)≈500ms
BTFSSPIR1,TMR2IF;
查询Timer2中断标志位是否为1,为1则完成定时
BCFPIR1,TMR2IF
MOVWFTMR2
4、提高内容:
使用Timer1定时器按中断方式设置2秒定时,完成LED灯的轮流点亮。
ORG0000H
GOTOSTART
BCFOPTION_REG,6;
中断为上升沿触发
MOVWFPIE1;
打开定时器Timer1中断
Timer1定时器打开,预分频1:
MOVLW03H
MOVLW0D0H
MOVWFINTCON;
打开GIE与PEIE中断
ORG0004H;
中断服务子程序
INTSEV
检查是否为Timer1中断
GOTORETN
RETN
RETFIE
实验三:
PIC单片机A/D转换的功能及使用方法
1、使用查询方式检测RA0口的可调电位器的输入模拟电压(范围:
0~5V),并将结果的高八位显示在RC口的8个LED灯上。
COUNTEQU20H
MOVLW41H
MOVWFADCON0;
选择A/D转换在RA0,并打开A/D转换,时钟为8tosc
MOVLW0x0e
MOVWFADCON1;
转换结果左移,且把RA0口设置成模拟量输入口
MOVLW0x01
MOVWFTRISA
CLRFPORTC
CLRFADRESH
BSFADCON0,2;
GO/DONE位置1,开始A/D转换
NOP
HERE
BTFSCADCON0,2;
检查是否转换完成
GOTOHERE
MOVFADRESH,W;
读取转换结果高8位信息
DELAY;
延时子程序
MOVWFCOUNT
CIRC
DECFSZCOUNT,F
GOTOCIRC
2、使用中断方式检测RA0口的可调电位器的输入模拟电压(范围:
BTFSSPIR1,ADIF;
查询A/D转换中断标志位是否为1,
MOVFADRESH,W
BCFPIR1,ADIF
BSFADCON0,2
MOVWFADCON0
MOVWFADCON1
CLRFPIE1
BSFPIE1,ADIE;
打开A/D中断
BSFINTCON,PEIE;
打开PEIE中断
BSFINTCON,GIE;
打开GIE总中断
3、提高内容:
利用RB0口接的按键中断控制对RA0口的可调电位器的输入模拟电压的采样,每按一次键采样一次,并将结果显示在LED灯上。
BTFSSINTCON,INTF;
查询是否有RB0按键中断
再次查询A/D转换是否已完成
BCFINTCON,INTF
MOVLW0x0E
MOVWFTRISB
BCFOPTION_REG,6
CLRFINTCON
BSFINTCON,INTE
BSFINTCON,PEIE
开启中断:
GIE、PEIE、INTE
实验四:
SCI串行通信实验
1、通过计算机上的串口助手软件发送8位二进制数,单片机接收后将结果显示在RD口8个LED灯上。
MOVWFTRISD;
D口为灯,所以作输出
MOVLW4DH
MOVWFSPBRG;
波特率设置Fosc/(64+(x+1))=1200bps
MOVWFTXSTA;
设置为异步方式
BCFPIR1,RCIF
BSFRCSTA,SPEN
BSFRCSTA,CREN;
开始接收
CLRFRCREG
BTFSSPIR1,RCIF
MOVFRCREG,W
MOVWFPORTD
BSFRCSTA,CREN
定时1秒向计算机发送0~9的ASCII码值。
COUNT2EQU21H
MOVWFSPBRG
设置为异步通讯
BSFRCSTA,SPEN;
设置为串口通讯
使用Timer1作为1秒定时的定时工具
LOO1
MOVLW30H
MOVWFTXREG
MOVLW09H
MOVWFCOUNT2;
发送计数器,发送每到10次(发送至39)便返回至30
BSFTXSTA,TXEN;
发送开始
LOO2;
循环累加发送程序
INCFTXREG,F
BSFTXSTA,TXEN
DECFSZCOUNT2,F
GOTOLOO2
GOTOLOO1
MOVLW04H
BTFSSPIR1,TMR1IF