单片机.docx
- 文档编号:26382638
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:10
- 大小:85.26KB
单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(10页珍藏版)》请在冰豆网上搜索。
单片机
单片机编程:
随时查阅指令表,存储器结构,哪些可以让用户使用?
特殊功能区的地址,位地址?
常用指令:
所有控制类指令(子程序调用,跳转,位查询,减一不为0跳转,比较不相等跳转等),查表指令,MOVX,查询指令,位操作指令。
熟悉中断设置,定时器串口的设置。
程序中灵活设置标号,可以很方便控制程序转移;
设置标志,适用于需要判断的场合,两种情况,使用查询指令跳转到相应处理程序
设置计数器,计数进中断的次数?
计数发送接收数据的个数?
计数当前显示哪一位LED?
设置寄存器,用于存储特殊的变量。
具体包括:
1延时;
2定时,定时输出,定时采集,定时查询等
3查询,按键查询,标志查询
4动态led,查表法
5AD0809,DA0832应用
6串口,存储器读写等。
1延时:
软件延时,常用于精度要求不高的情况,如按键延时消抖,等待AD转换,延时显示等;常用多重循环结构
12MHz晶振时,一个机器周期为1µs
DEL:
MOVR7,#200
DEL1:
MOVR6,#125
DEL2:
DJNZR6,DEL2;125*2=250µs
DJNZR7,DEL1;0.25ms*200=50ms
RET
还可以在延时程序下加一次DJNZR5,DELAY指令
2.定时,定时输出,例如方波输出;定时采集,定时查询等,在中断中,启动AD转换并读结果,存储,并为下一次采集准备。
A牢记定时公式,
设置方法:
中断设置,定时方式设置,启动定时。
例:
晶振为6M,编写程序,要求使用T0,采用方式2定时,在P1。
0输出周期为400微秒,占空比为1:
10的矩形脉冲
ORG0000H
AJMPMAIN;主程序入口
ORG000BH;中断入口
AJMPPT0
ORG0100H
MAIN:
MOVR2,#00H;计数器清零
MOVTMOD,#02H;定时;方式2
MOVTH0,#0ECH;初值=236;
MOVTL0,#0ECH
SETBP1.0
SETBTR0;启动计数
SETBET0
SETBEA;开中断
HERE:
SJMPHERE;等待
PT0:
CJNER2,#09H,PT01
SETBP1.0
MOVR2,#00H
RETI
PT01:
CLRP1.0
INCR2
RETI
END
B秒表,计数程序实现:
如何实时显示时钟?
动态LED显示每一位需要20ms左右延时,否则会闪烁,用定时器做20ms,50次为1s,时间累加思路同上,但是,在每一次中断中,完成时间的累加和显示一位!
C定时AD采集?
定时周期近似为采样周期,在定时中断中启动AD,并读结果,存储,准备下一次转换。
D测量频率,周期?
1.使用GATE位测量脉冲宽度,只能测高电平持续时间,有些情况下高低电平时间不同,但此方法编程简单。
2.测周法:
适用于被测频率较低时。
测周法是在被测转速信号的一个周期内,计数内部计数器的时钟脉冲数。
下图为测周法原理图。
思路:
被测信号接外中断,第一次进入外中断,启动计数器,第二次进入外中断,停止计数,并读计数器值,关中断。
问题:
如何判断是第一次进入还是第二次进入?
设置标志
若周期很大,定时器溢出怎么办?
定时中断设置计数器,重新计数,外中断优先级高。
若周期很小,此方式误差越大。
3测频法:
适用于被测频率较高时。
测频法是在一定时间间隔内,计数信号的脉冲数N,下图为测频法原理图:
思路:
定时器0做定时时间,定时器1为计数方式引脚接被测信号,启动定时器0同时启动定时器1,定时0中断时读定时器1。
要求被测信号周期要小于机器周期,否则定时器1先溢出,一般都能满足要求。
当被测信号周期较大时误差越大。
具体在测频时,要先大概知道被测频率范围才能选择方法,若频率变化范围大,还可以采用设置门限的测频侧周切换法。
3.查询。
查询标志,用JB,JNB,查询寄存器的值,用CJNE指令
第几次进入中断?
寄存器的值,做计数器,自己设定寄存器。
例如时钟,用3个寄存器存储分秒时分别为ABC,定时做100ms,设置计数器,进中断一次加1,计数器满10,清零并给C加1,C满60?
CJNZ,给B加1,B满60?
。
。
。
。
按键查询
行线列线都接到单片机引脚,
置第一行线为0,依次查询列些;
置第二行线为0,依次查询列些;
。
。
。
。
。
。
4led显示
思路,段码为当前位显示值,位选线确定位,依次输出,每输出一次适当延时。
5AD,DA
DA0832应用要点:
关键在根据硬件连接确定其地址!
选中地址,写出数据即可。
数据和模拟量的对应关系根据硬件接和0832资料确定。
要会编写各种输出波形,方波,三角,锯齿
AD0809应用要点:
关键在根据硬件连接确定其各端口地址!
选中地址,写出数据即可,写的同时启动AD转换,适当延时等待转换结束后读结果。
会编写定时采集程序。
6.串口。
单次的串口发送接收很简单,连续发送数据块则不同,
数据块有发送地址段,接收地址段,通过发送地址修改发送数据,并判断是否发送完毕;接收时根据接收地址存储数据,并判断是否接收完毕。
所有需要判断的地方都可设置标志,用查询指令来判断转入相应的处理程序。
使用8031的串行口按工作方式3进行串行口数据通讯,假定波特率为1200b/s,第9数据位作奇偶校验位,以中断方式传送数据,请编写通讯程序。
中断方式
发送程序
ORG0000H
LJMPMAIN
ORG0023H
LJMPSSEND
ORG0100H
MAIN:
MOVSP,#60H
MOVTMOD,#20H
MOVTH1,#0F3H
MOVTL1,#0F3H
MOVR2,#0FFH
MOV87H,#80H
MOVSCON,#0C0H
MOVDPTR,#2000H
SETBTR1
SETBES
SETBEA
SEND:
MOVXA,@DPTR
MOVC,P
MOVTB8,C
MOVSBUF,A
HERE:
AJMPHERE
SSEND:
DJNZR2,SEND1
AJMPRETURN
SEND1:
PUSHDPH
PUSHDPL
PUSHPSW
PUSHACC
SETB0D4H
SETB0D3H
CLRTI
INCDPTR
MOVXA,@DPTR
MOVC,P
MOVTB8,C
MOVSBUF,A
POPACC
POPPSW
POPDPL
POPDPH
CLR0D4H
CLR0D3H
RETURN:
RETI
END
接收程序:
ORG0000H
LJMPMAIN
ORG0023H
LJMPRRES
ORG0100H
MAIN:
MOVSP,#60H
MOVTMOD,#20H
MOVTH1,#0F3H
MOVTL1,#0F3H
MOVR2,#0FFH
SETBTR1
MOVDPTR,#3000H
MOV87H,#80H
MOVSCON,#0D0H
SETBES
SETBEA
SJMP$
RRES:
DJNZR2,RES
AJMPRETURN
RES:
CLRRI
MOVA,SBUF
MOVC,P
JNCL1
JNBRB8,ERP
AJMPL2
L1:
JBRB8,ERP
L2:
MOVX@DPTR,A
INCDPTR
AJMPRETURN
ERP:
SETBP1.0
CPLP1.0
RETURN:
RETI
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机