单片机第三章例题.docVIP

  • 16
  • 0
  • 约4.63千字
  • 约 11页
  • 2015-08-09 发布于湖北
  • 举报
单片机第三章例题.doc

[例] 设单片机的P1.0口线外接一个LED电路,当P1.0输出低电平,LED亮。编程实现控制LED亮灭。 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV SP,#60H SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAY LJMP MAIN DELAY: MOV R7,#250 D1: MOV R6,#100 D2: DJNZ R6,D2 DJNZ R7,D1 RET END [例] 应用定时器T0产生1ms定时,并使P1.0输出周期为2ms的方波,已知晶振6MHz。 选择13位计数器,计数初值X:(213-X)*Tcy=1*10-3 X=7692(1111000001100B) 如何赋值TH0、TL0? TH0=0F0H,TL0=0CH 判断计数结束的方法? 查询方法:TF0 ORG 0000H MOV TMOD,#00H ;写入方式控制字 MOV TL0,#0CH ;计数初值写入 MOV TH0,#0F0H SETB TR0 ;启动T0 SETB P1.0 LP: JBC TF0,OK ;定时溢出转移,同时清除TF0 SJMP LP OK: MOV TL0,#0CH ;计数初值写入 MOV TH0,#0F0H CPL P1.0 AJMP LP END 判断计数结束的方法? TF0硬件置1触发中断请求 ORG 0000 LJMP MAIN ORG 000BH ;T0中断向量 LJMP INTT0 ;跳转至中断服务程序 ORG 0030H MAIN: MOV SP,#60H SETB EA ;开全局中断 SETB ET0 ;开T0中断 SETB PT0 ;设置T0高优先级 MOV TMOD,#00H ;写入方式控制字 MOV TL0,#0CH ;计数初值写入 MOV TH0,#0F0H SETB TR0 ;启动T0 SETB P1.0 SJMP $ INTT0: MOV TL0,#0CH ;计数初值写入 MOV TH0,#0F0H CPL P1.0 RETI ;中断返回 END [例] 用查询法编写串行口方式1下的发送程序。设单片机主频为11.0592 MHz,采用定时器1方式2作波特率发生器,波特率为1200 bps;发送ASCII码数据在片内RAM的30H~4FH单元,要求在最高位上加奇校验位。 1、定时器T1的计数初值: X=0E8H(当SMOD=0时) 2、ASCII码数据的最高位:奇校验位 3、串行通信字符帧格式:10位(启动位、8位数据位、停止位) ORG 0000 LJMP MAIN ORG 0030H MAIN: MOV SP,#60H MOV TMOD,#20H ;定时器T1为方式2 MOV TL1,#0E8H MOV TH1,#0E8H SETB TR1 ;启动T1循环计数 MOV PCON,#00H ;取SMOD=0 MOV SCON,#40H ;串口工作方式1 MOV R0,#30H ;R0指针指向数据块 MOV R2,#32 ;发送的字节数 DT: MOV A,@R0 MOV C,P CPL C MOV ACC.7,C ;设置奇校验位 MOV SBUF,A ;发送数据 JNB TI,$ ;等待发送结束 CLR TI ;清除中断标志位 INC R0 ;数据指针加1 DJNZ R2,DT ;数据块逐个发送 SJMP $ END [例] 用查询法编写串行口方式1下的接收程序。设单片机主频为11.0592 MHz,采用定时器1方式2作波特率发生器,波特率为1200 bps;串口接收32个ASCII码数据,存入片内RAM的30H~4FH单元;通信双方约定ASCII码最高位为奇校验位,接收出错向相应单元送0FFH。 ORG 0000 LJMP MAIN ORG 0030H MAIN: MOV SP,#60H MOV TMOD,#20H ;定时器T1为方式2 MOV TL1,#0E8

文档评论(0)

1亿VIP精品文档

相关文档