姓名 学号
单片机实验报告 四
评 阅 时间 周一11-13 地点 计708 指导老师: 实验题目 C51单片机片上资源开发实验 一. 实验目的与要求
? ?
学习单片机片上资源开发技术 研究用片上资源实现自动控制的方案
二:实验环境
在Keil uVision2下实验。
三.实验内容
1. 用51单片机I/O端口和扩展口控制LED和按键 ①按键扫描子程序,每50ms检查按键状态。 ②LED输出子程序
③按1次键,377扩展输出口驱动LED灯(位输出“1”点亮相应位灯)显示内容改变1次(0x00-0x01-0x02-0x04-0x08-0x10-0x20-0x40-0x80-0xff循环),初始状态显示0x00。
四.系统实施
①按键扫描子程序,每50ms检查按键状态。 ②LED输出子程序
五、 体会
这个实验对我初学单片机的我有点难度,因为最初接触这个实验时,对于单片机的I/O端口和按键都不是很清楚,最后通过对课本知识的学习,还有上机实验对此基本了解。通过这次试验,实现了对课本知识的时间,更加了解单片机结构以及组成原理。对于更加深入的学习单片机有很大好处。 六.附录
1.用51单片机I/O端口和扩展口控制LED和按键 DISPLAY_NUM EQU R0
;显示内容的表索引
KEY_DOWN BIT PSW.5 ;模式键按下标志位(PSW的F0) KEY_DEMO BIT P1.0 ADDR_377 EQU 0FFFH
;按键输入引脚
;377的地址,P2.6~P2.4=000的地址均可
ORG 0000H ;仿真调试时,用户程序起始地址8000H LJMP
0030H
ORG 0030H START:
;初始化 MOV SP, #30H MOV
DISPLAY_NUM, #0 ;LED显示内容初始为0
;通过377口将LED显示为R0为索引的表容
ACALL LED_DISPLAY LED_KEY_LOOP:
ACALL DELAY50MS ;延时50ms
ACALL KEY_SCAN ;检查按键,若按下,DISPLAY_NUM+1 SJMP
;输出(KEY0_ENTR+DISPLAY_NUM)的内容给377 LED_DISPLAY: MOV A, #0AH CLR C
;C标志位清0
LED_KEY_LOOP
;返回主程序循环
SUBB A, DISPLAY_NUM ;判断是否超出状态 JNZ MOV DISP:
MOV DPTR, #KEY0_ENTR MOV A, DISPLAY_NUM MOVC
MOV DPTR, #ADDR_377
A, @A+DPTR
; 取得(KEY0_ENTR+DISPLAY_NUM)的内容
DISP
DISPLAY_NUM, #0 ;是,清零
MOVX @DPTR,A ;输出到377
RET KEY_SCAN:
;按键扫描程序
JNB KEY_DEMO, KEY_SCAN1 ;键是否按下? 是(KEY_DEMO=0),要检测按键是否有效; KEY_SCAN0:
CLR KEY_DOWN ;否(KEY_DEMO=1) ,清除标志位 SJMP KEY_SCAN_EXIT ;返回
KEY_SCAN1:
JB KEY_DOWN, KEY_SCAN_EXIT ;是,检测标志位,确认是否为有效按键
;(KEY_DOWN=1),标志位没有发生0->1(松开->按下)状态变化为无效按键,返回 CLR KEY_DOWN ;按键有效(即KEY_DEMO=0, KEY_DOWN=0), ;置位按键标志位
INC DISPLAY_NUM ;并把显示内容加1 ACALL LED_DISPLAY KEY_SCAN_EXIT: RET
;延时子程序 延时50ms,使用了R5,R6,R7 DELAY50MS: MOV R7,#04H DELAY0:
MOV R6,#81H DELAY1:
MOV R5,#7EH DELAY2: DJNZ DJNZ
R5,DELAY2 R6,DELAY1
DJNZ RET
R7,DELAY0
;指示灯编码 KEY0_ENTR:
DB 00H ;显示'00000000' DB 01H ;显示'00000001' DB DB DB DB DB DB DB DB END
显示'00000010' 显示'00000100' 显示'00001000' 显示'00010000' 显示'00100000' 显示'01000000' 显示'10000000' 显示'11111111' 02H ; 04H ; 08H ; 10H ; 20H ; 40H ; 80H ; 0FFH ;
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新初中教育单片机实验报告 全文阅读和word下载服务。
相关推荐: