发布时间 : 星期三 文章天大自动化智能装置与设计实验报告更新完毕开始阅读
智能装置与设计实验报告
——实验程序汇总
自动化4班 晁平复 3008203263 自动化6班 王 平 3008203281
实验一:PIC系列单片机I/O口组成与使用方法
1、使用软件延时,使RC口的8盏灯轮流点亮。 实验程序:
LIST P=16F877
#INCLUDE
MOVWF TRISC BCF STATUS,RP0 MOVLW 80H
MOVWF PORTC BCF STATUS,C
;C端口RC7灯亮
;进位标志位清零,防止循环时有两个灯在亮。
;软件延时用临时寄存器
START
;C端口输出
DELAY MOVLW 0FFH MOVWF GENR1 LOOP1
MOVLW 90H MOVWF GENR2
LOOP2 DECFSZ GENR2,F
GOTO LOOP2 DECFSZ GENR1,F GOTO LOOP1 RRF PORTC,1 BTFSC STATUS,C RRF PORTC,1 GOTO DELAY END
;LED灯状态右移,若移到C标志位,则再多移一下
;延时大致为256*144*2.5*10-6
2、提高内容:利用RB0口接的按键控制RC口连接的LED灯,每按一次键切换一盏灯,从RC7到RC0分别点亮,按键使用查询方式检测。 实验内容:
LIST P=16F877
#INCLUDE
GENR2 EQU 21H
ORG 0040H START BSF STATUS,RP0 BCF STATUS,RP1 MOVLW 01H
MOVWF TRISB
MOVLW 00H MOVWF TRISC BCF STATUS,RP0 CLRF PORTB
MOVLW 80H
MOVWF PORTC BCF STATUS,C LOOP BTFSS PORTB,0 GOTO LOOP
RRF PORTC,1
BTFSC STATUS,C RRF PORTC,1 LOOP1 MOVLW 0FFH
MOVWF GENR1
LOOP2 MOVLW 20H MOVWF GENR2 LOOP3 DECFSZ GENR2,F GOTO LOOP3 DECFSZ GENR1,F GOTO LOOP2 BTFSC PORTB,0 GOTO LOOP1 GOTO LOOP
END
;B口RB0为输入,按键输入
;检测是否RB0按下,有则说明有按键
;定时与上例相同,唯一区别是GENR2从144改为32 ;检测RB0是否弹起,一次完整按键应该是按下并弹起
实验二:PIC单片机定时/计数器的功能及使用方法
1、使用Timer0定时器按查询方式设置500毫秒定时,完成LED灯的轮流点亮。 实验程序:
LIST P=16F877
#INCLUDE
ORG 0040H
START BSF STATUS,RP0 BCF STATUS,RP1 MOVLW 00H
MOVWF TRISC MOVLW 07H
MOVWF OPTION_REG BCF STATUS,RP0
MOVLW 80H
MOVWF PORTC BCF STATUS,C LOOP CALL DELAY RRF PORTC,1
BTFSC STATUS,C
RRF PORTC,1 GOTO LOOP DELAY BCF INTCON,2 BCF STATUS,RP0 BCF STATUS,RP1 MOVLW 0AH
MOVWF COUNT1 MOVLW 3DH
MOVWF TMR0
LOOP1 BTFSS INTCON,2
GOTO LOOP1
DECFSZ COUNT1,F
GOTO LOOP2 RETURN LOOP2
;设置分频比为1:256
;Timer0中断标志位清零
;Timer0延时10-6*256*(256-61)*10≈0.5s
;查询Timer0中断标志位是否为1,为1则完成定时
BCF INTCON,2 MOVLW 3DH MOVWF TMR0 GOTO LOOP1 END
2、使用Timer1定时器按查询方式设置1秒定时,完成LED灯的轮流点亮。 实验程序:
LIST P=16F877
#INCLUDE
ORG 0040H
START BSF STATUS,RP0 BCF STATUS,RP1 MOVLW 00H MOVWF TRISC BCF STATUS,RP0 MOVLW 31H
MOVWF T1CON MOVLW 80H MOVWF PORTC
BCF STATUS,C
LOOP CALL DELAY RRF PORTC,1 BTFSC STATUS,C
RRF PORTC,1
GOTO LOOP DELAY BCF STATUS,RP0 BCF STATUS,RP1 BCF PIR1,TMR1IF MOVLW 02H
MOVWF COUNT1 MOVLW 0CH MOVWF TMR1H MOVLW 22H
MOVWF TMR1L
LOOP1
;Timer1打开,预分频比1:8
;清除Timer1中断标志位
;Timer1延时10-6*8*(65536-3106)*2≈1s