1、10年复习单片机复习练习1现有一蜂鸣器,用80C51设计一系统,使蜂鸣器周而复始地响1min,停1min,设晶振为12MHz。要求采用定时子程序。画出电路,编写子程序和主程序。解:1. 电路2. 定时子程序定时器计数一次的时间: s=1us定时50ms的计数次数: =50 000次定时/计数器工作方式:方式0 13位定时/计数器方式1 16位定时/计数器方式2 8位循环定时/计数器(初值重装入)方式3 T1做波特率发生器(用与串行口)16位定时/计数器的最大计数次数:216=26K64 000(次)50 000次所以:采用16位定时/计数器(即定时/计数器工作于方式1)因为:50 000=C3
2、50H所以:定时器初值=1 0000H C350H= 3CB0H流程图工作方式TMOD=10H定时器1定时器0GATEC/T(平)M1M00001子程序:DELAY:MOV TMOD,#10H ;设定时器工作方式 MOV TH1,#3CH ;设定时器1高8位TH1的初值 MOV TL1,#B0H ;设定时器1低8位TL1的初值 SETB TR1 ;启动定时器1工作REQTF1: JNB TF1,$ ;查询TF1的状态,等待定时器1溢出 CLR TF1RET ;返回主程序3. 使P1.1电平每隔1min变反一次的主程序定时子程序定时50ms要定时1min,需要循环=1 200次因为:工作寄存器(
3、R0R7)只有8位,28=2561 200所以:采用双重循环。设内循环40次,外循环30次,40*30=1200流程图程序:ORG 1000HPRO : MOV R2,#30 ;设外循环次数OUTERLP: MOV R3,#40 ;设内循环次数INNERLP : LCALL DELAY ;调定时50ms子程序DJNZ R3,INNERLP ;内循环DJNZ R2,OUTERLP ;外循环CPL P1.0 ;P1.1取反AJMP PROEND完整程序ORG 1000HPRO : MOV R2,#30 ;设外循环次数OUTERLP: MOV R3,#40 ;设内循环次数INNERLP : LCAL
4、L DELAY ;调定时50ms子程序DJNZ R3,INNERLP ;内循环DJNZ R2,OUTERLP ;外循环CPL P1.0 ;P1.1取反AJMP PRODELAY:MOV TMOD,#10H ;设定时器工作方式 MOV TH1,#3CH ;设定时器1高8位TH1的初值 MOV TL1,#B0H ;设定时器1低8位TL1的初值 SETB TR1 ;启动定时器1工作REQTF1: JNB TF1,$ ;查询TF1的状态,等待定时器1溢出 CLR TF1RET ;返回主程序END 思考: 蜂鸣器响10us练习2. 利用80C51串行口工作方式3实现一个数据块的带奇偶校验的发送,设发送数
5、据缓冲区首地址为片内50H,发送数据长度(字节数)为10H,选定波特率为1200,时钟频率为11.0529MHz。解:分析:串行口方式0:同步通信方式,用于串行口扩展 方式1:异步通信方式,波特率可变,由T1溢出率决定 即T1溢出次,发送一个位,T1一般用方式2, 所以波特率= 方式2:多机通信方式(与SM2有关),波特率= 方式3:多机通信方式(与SM2有关),波特率与方式1同查表:教材P84 表4-3 波特率为1200、时钟频率为11.059MHz、SMOD=0时,定时器T1的计数初值为E8H 定时器T1工作于方式21. 采用查询方式流程图定时器工作方式字TMOD=20H定时器1定时器0G
6、ATEC/T(平)M1M00011串行口工作方式字SCON=C0HSM0SM1SM2RENTB8RB8TIRI1100程序ORG 1000HMOV R2,#10HMOV R0,#50HMOV SCON,#0C0HMOV TMOD,#20HCLR SMODMOV TH1,#E8HMOV TH0,#E8HBYTLP:MOV A,R0 MOV TB8,P MOV SBUF,A SETB TR1 JNB TI,$ CLR TI INC R0 DJNZ R2,BYTLP END2. 采用中断方式采用循环结构,每次循环发送一个字节,在发送一个字节的过程中需要等待,发送完一个字节后跳出等待,因此用一个标志位
7、来标志一个字节有没有发送完。该标志位首先清零,在发送一个字节的过程中,不断查询该标志位的状态,若是零,继续查询;若一个字节发送完毕,进入中断服务子程序,在此子程序中,将标志位置1;中断处理完毕,返回查询标志位的语句,因为标志位已是1,所以跳出查询流程图:(1)主程序ORG 1000HMOV R2,#10HMOV R0,#50HSETB EASETB ESCLR ET1MOV SCON,#C0HMOV TMOD,#20HMOV PCON,#00H ;设置SMOD=0MOV TH1,#E8HMOV TH0,#E8HBYTLP:CLR 00H MOV A,R0 MOV TB8,P MOV SBUF,
8、A SETB TR1 JNB 00H,$ INC R0 DJNZ R2,BYTLP END(2)中断服务子程序流程图子程序ORG 0023HAJMP SENDSEND:CLR TISETB 00HRETI练习3片内RAM 40H开始的单元内有10字节二进制数,编程找出其中最大值并存于片外RAM 50H单元解: 流程图ORG 1000HMOV R0,#40HMOV R1,#50HMOV R2,#10MOV A,R0MOV 30H,R0CJNE A,30H,LOG1LOG1:JC NEXTXCH A,30HNEXT:INC R0DJNZ R2MOVX R1,AEND本课程的重点章节:第二章 单片机的结构第三章 单片机的指令第四章 汇编程序(综合)第五章 第六章 第七章 三个基本功能第九章 并行扩展键盘和LED显示器考试题型:1. 单项选择 13*2分=26分2. 程序题 3小题,共16分3. 应用题 5小题,共58分编程很重要!注意: 要求编写主程序, 一定要有伪指令ORG和END要求编写指令段, 可不写伪指令ORG和END子程序一定要有返回语句熟悉指令系统 (几类指令)重点:1. 三个基本功能单元 2. LED显示器 3. 单片机指令
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1