《自动化单片机实验》word版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1(流水灯)
//串行口工作在方式0下,利用4094串入并出移位寄存器// 显示流水灯效果
ORG 0000H;程序从0000开始运行
LJMP MAIN;跳到主程序
ORG 064H
MAIN:;主程序循环点亮
MOV SCON, #00H
CLR P3.2
MOV A,#0FEH
MOV SBUF,A
MOV P0, A
LCALL DELAY
LIGHT:
//SETB P3.2
ACALL DELAY
RL A
CLR P3.2
MOV SBUF,A
MOV P0, A
SJMP LIGHT
DELAY:
MOV R5,#20;延时子程序1闪烁灯调用
D1: MOV R6,#20
D2: MOV R7,#250
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
实验1
ORG 0000H
JMP MAIN
MAIN:
MOV P0,#00H
LCALL DELAY
MOV A,#0FEH
LOOP:
MOV P0,A
LCALL DELAY
RL A
AJMP LOOP
DELAY:
MOV R5,#20
D1: MOV R6,#20
D2: MOV R7,#250
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
实验2
;****************************************************************************** **
; 跑马灯试验: 定时器T1方式1控制
*
;
*
; 开机8个灯循环点亮。
*
; 硬件连接:p0口8路指示灯,
*
; 连接方法:JP11(P2)和JP1(LED灯) 用8PIN排线连接起来
*
;****************************************************************************** **
/*
T1,方式1,晶振12MHZ,控制P1.0端口第1秒变换电平1次
TC=65530-50000=15530=3CB0H
*/
ORG 0000H;程序从0000开始运行
JMP MAIN;跳到主程序
ORG 001BH ;定时1中断入口地址
LJMP INTRUPT1
ORG 0100H
MAIN:;主程序循环点亮
MOV P0, #00H;全亮
MOV R5, #00H;R5用于中断计数每20次中断为1秒
MOV A, #0FEH;每次只亮一个灯。
MOV TMOD , #90H ;90H为门控方式,此时INT1高电平时T1启动
MOV TH1 , #03CH ;装入定时器初值
MOV TL1 , #0B0H
SETB EA;打开总中断
SETB ET1;允许定时器/计数器1 中断
SETB TR1;开启定时器/计数器1 中断
AJMP $;原地踏步
ORG 0200H
INTRUPT1:
MOV TH1 , #03CH
MOV TL1 , #0B0H
INC R5;R5++
CJNE R5 , #20 , LOOP;每隔20*50MS 一秒后灯变不等于20则跳转MOV R5, #00H
MOV P0, A;输出到p1
RL A;循环左移。
AJMP LOOP; 跳转main继续循环
LOOP:
RETI
END
实验3
发送
//串行口工作在方式0下,利用4094串入并出移位寄存器
// 显示流水灯效果
ORG 0000H;程序从0000开始运行
LJMP MAIN;跳到主程序
ORG 064H
MAIN:
MOV TMOD,#20H ;T1方式2
MOV TL1,#0E8H;波特率
MOV TH1,#0E8H
SETB TR1;启动T1
MOV SCON, #40H ;串口方式1
SETB EA
SETB ES
CLR TI;清发送标志
MOV A, #0FEH;
TXDAT:
LCALL DELAY
RL A;左移位
MOV SBUF,A ;发送
JNB TI,$;等发送完标志
CLR TI ;清标志
JMP TXDAT;发送下一个
ORG 0023H;
JMP STI;
ORG 300H
STI:
CLR RI;清标志
JMP TXDAT;进入发送程序
RETI;返回中断
DELAY:
MOV R5,#20;延时子程序1闪烁灯调用
D1: MOV R6,#20
D2: MOV R7,#250
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
接受
//串行口工作在方式1下,接收端程序?
// 显示流水灯效果
ORG 0000H;程序从0000开始运行
LJMP MAIN;跳到主程序
ORG 064H
MAIN:
MOV TMOD,#20H ;T1方式2
MOV TL1,#0E8H;波特率
MOV TH1,#0E8H
SETB TR1
MOV SCON, #60H ;串口方式1
SETB EA;允许中断
SETB ES;开放串口中断
SETB REN;进入接收状态
CLR RI;清接收标志
JMP $;原地等待
ORG 0023H;中断入口
JMP RCDAT
ORG 200H
RCDAT:
JNB RI,$; 等接收标志为1,表示1帧接收完
CLR RI;清接收标志
MOV P0,SBUF;接收数据到P0
SJMP RCDAT;
RETI;
END
实验4
/*
LED数码管试验,阴极管,P0输出
分别用定时器和循环二种方式
实现0~9的循环显示
*/
ORG 000H
SJMP START
ORG 001BH ;定时中断入口地址
LJMP INTE
ORG 064H
START://////////////////////////使用定时器延时, 先要设置定时器MOV R0,#00H
MOV R1,#00H
MOV R2,#00H
MOV TMOD , #10H ;90H为门控方式,此时INT1高电平时T1启动MOV TH1 , #03CH ;装入定时器初值
MOV TL1 , #0B0H
SETB EA;打开总中断
SETB ET1;允许定时器/计数器1 中断
SETB TR1;开启定时器/计数器1 中断
AJMP $;原地踏步
///////////////////////////////////////////
INTE: ////中断程序
MOV TH1, #03CH
MOV TL1, #0B0H
INC R0
CJNE R0, #10 , LOOP;R0大于10(500ms)则向下执行,否则到LOOP处,.
//////以下为定时到要做的事情
MOV R0, #00H
MOV A, R1
MOV DPTR,#TABLE;将表格地址装入DPTR
MOVC A, @A+DPTR;查表格第A个数
MOV P0,A;显示表格第A个数
INC R1;
INC R2
MOV P1, R2 ;实现8个数码管轮流显示,试验箱的138译码器接P2.2、P2.3、P2.4
CJNE R2,#8,LOOP;
MOV R2, #00H
CJNE R1,#16,LOOP ;R1够10次清零,返回中断
MOV R1, #00H
LOOP:
RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB 077H,07cH,039H,05eH,079H,071H,000H,040H
END。