单片机接口技术复习资料Word格式.doc
- 文档编号:6958381
- 上传时间:2023-05-07
- 格式:DOC
- 页数:11
- 大小:133.50KB
单片机接口技术复习资料Word格式.doc
《单片机接口技术复习资料Word格式.doc》由会员分享,可在线阅读,更多相关《单片机接口技术复习资料Word格式.doc(11页珍藏版)》请在冰点文库上搜索。
端口初始化
具体处理程序
子程序1:
…
RET
子程序2:
…
中服1:
…
RETI
……
中服5:
…
RETI
第四部分是数据表
变量名:
DB/DW数据表
END;
最后必须有END,标明程序的结束位置,否则汇编报错!
==============================================================================
数码管共阴:
3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7FH,6FH,40H【0-9】
数码管共阳:
0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh
【0-9、A、B、C、D、E、F】
===============================================================================
★一个51单片机系统,需要启用INT0中断和T1中断,并且T1中断为高优先级,INT0中断为低优先级而且是沿触发。
程序相关指令和结构如下:
ORG 0000H
LJMP START
ORG 0003H;
这2句是INT0的中服入口设置
LJMP INT_W0
ORG 001BH;
这2句是T1的中服入口设置
LJMP INT_T1
ORG 0100H
……
MOV IE,#10001001B;
设置总允许和INT0允许、T1允许(可 以用位 操作实现)
MOV IP,#00001000B;
设置T1位高优先级(可以用位操作)
SETB IT0 ;
设置INT0为沿触发(下降沿触发)
SETBEA
SETBEX0等效于MOVIE,#89H
SETBET1
SETBPT1等效于MOVIP,#08H
两种指令的效果区别:
位操作只改变指定位,不影响其他位。
这在程序中间进行某个中断的变化时比较常用。
字节操作影响全部中断,初始化的时候常用。
……
中断服务程序
INT_W0:
RETI
INT_T1:
END
★已知系统晶振频率12MHz,要用T0产生50ms定时中断,T0中断设置为高优先级,T0中断服务程序在P1.0输出周期1秒的方波。
解:
12MHz晶振,1个机器周期=1us,定时50ms需要计数50000次,采用模式1的16 位计数。
时间常数a=65536-50000=15536=3CB0H
分析:
1秒周期的方波,高电平0.5秒,低电平0.5秒;
定时器50ms中断一次,中断10次是500ms=0.5秒,用30H单元记录中断次数。
......
中断服务程序:
PTF0:
ORL TL0,#0B0H MOV TH0,#3CH
DJNZ 30H,PTF0R
MOV 30H,#10
CPL P1.0
PTF0R:
RETI
主程序:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP PTF0
ORG 0300H
MAIN:
MOV SP,#05FH
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TMOD,#1
MOV IP,#2
MOV IE,#82H
SETB TR0
MOV 30H,#10
模式0串行发送10个字节:
MOVSCON,#00000000B;
模式0
MOVR2,#10;
循环10次
MOVR0,#50H;
假设数据在50H单元
;
开始的区域
LLL:
MOVA,@R0
MOVSBUF,A
JNBTI,$
CLRTI
INCR0
DJNZR2,LLL
模式0串行接收10个字节:
MOVSCON,#00010000B;
MOVR2,#10;
MOVR0,#50H;
假设数据存入50H单
元开始的区域
JNBRI,$
CLRRI
MOVA,SBUF
MOV@R0,A
DJNZR2,LLL
串口:
8255:
初始化程序3句话:
MOVDPTR,#控制口地址
MOVA,#控制字
MOVX@DPTR,A
读口2句话:
MOVDPTR,#数据口地址
MOVXA,@DPTR
写口3句话:
MOVA,#要输出的数据
利用8155的定时器产生方波,方波频率是TI输入脉冲频率的24分频,PA、PB用于输出,PC用于输入。
初始化的子程序如下:
INI8155:
SETB P1.0;
IO/M=1,选择寄存器(IO口)
MOV R0,#4;
地址4=00000100B,这是定时器的低字节寄存器地址
MOV A,#18H;
定时器初值24=18H,减1计数器直接用24为初值
MOVX@R0,A;
写入定时器低字节寄存器
INC R0;
指向5=00000101B,定时器高字节寄存器
MOV A,#40H;
40H=01000000B,最高两位01=连续方波方式
MOVX @R0,A;
写入定时器高字节寄存器
MOV R0,#0;
地址0是8155控制寄存器地址
MOV A,#0C3H;
控制字0C3H=11000011B
写入控制字
RET
写一个子程序,功能是根据A中的值对P1、P3口读入的数据进行加、减、乘、除运算。
(假设A取值为0、1、2、3,在调用子程序之前已经获得,就是说:
A是子程序的调用参数!
FOUR:
MOVP1,#0FFH
MOVP3,#0FFH
散
转
MOVDPTR,#TABLE
RLA
JMP@A+DPTR
TABLE:
AJMPPRG0
AJMPPRG1
AJMPPRG2
AJMPPRG3
PRG0:
MOVA,P1
ADDA,P3
MOVP1,A
CLRA
ADDCA,#0
MOVP3,A
RET
PRG1:
MOVA,P1
CLRC
SUBBA,P3
RLCA
PRG2:
MOVB,P3
MULAB
MOVP3,B
PRG3:
MOVB,P3
DIVAB
8只LED灯流水【定时器】
LJMP START
ORG 000BH
LJMP TO_INT
ORG 0100H
MOV SP,#0EFH
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TMOD,#1
MOV IP,#2
MOV IE,#82H
SETB TR0
MOV 30H,#20
MOV A,#0FEH
LJMP $
TO_INT:
ORL TL0,#0B0H
MOV TH0,#3CH
DJNZ 30H,TO_EXIT
MOV 30H,#20
MOV P1,A
RL A
TO_EXIT:
RETI
END
=====================================
读开关状态显示。
ORG 0000H
KLB:
MOV C,P1.4
MOV P1.0,C
MOV C,P1.5
MOV P1.1,C
MOV C,P1.6
MOV P1.2,C
MOV C,P1.7
MOV P1.3,C
SJMP KLB
END
8只LED灯流水【查询】
ORG 0000H
AJMP START
ORG 0030H
MOV SP,#5FH
MOV A,#0FEH
MOV TMOD,#01H
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
LOOP:
JBC TF0,NEXT
AJMP LOOP
NEXT:
CLR TR0
CLR TF0
MOV P1,A
RL A
MOV TL0,#00H
ORG 0000H
LJMP KLA
ORG 0050H
KLA:
MOV A,P1
SWAP A
ORL A,#0F0H
MOV P1,A
SJMP KLA
==========================================================================
单个数码管静态显示 多个数码管扫描显示
org 0000h
ljmp start
org 0100h
start:
mov sp,#4fh
loop:
mov r2,#0h
loop1:
mov a,r2
lcall chabiao
mov p0,a
lcall delay
inc r2
cjne r2,#10h,loop1
ljmp loop
DELAY:
MOV R5,#100
L1:
MOV R6,#200
L2:
MOV R7,#12
L3:
DJNZ R7,L3
DJNZ R6,L2
DJNZ R5,L1
RET
chabiao:
mov dptr,#tab
movc a,@a+dptr
ret
tab:
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh
end
ORG0000H
LJMPSTART
ORG000BH
LJMPT0_INT
ORG0100H
MOVSP,#5FH
MOVTH0,#0CCH
MOVTL0,#00H
MOVTMOD,#1
MOVIP,#2
MOVIE,#82H
SETB TR0
MOV30H,#8
MOVR3,#1H
MOVR0,#0H
LJMP $
T0_INT:
ORLTL0,#00H
MOVTH0,#0CCH
MOVA,R0
LCALL CHABIAO
MOV R2,#0H
MOV P2,R2
MOVP0,A
MOVP2,R3
MOVA,R3
RL A
MOVR3,A
INC R0
cjne r0,#8,t0_exit
mov r0,#0
T0_EXIT:
RETI
CHABIAO:
MOVDPTR,#TAB
MOVCA,@A+DPTR
RET
TAB:
DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
ORG 0000H
LJMP TIMER
MOVSP,#5FH
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTMOD,#1
MOVIP,#2
MOVIE,#82H
SETB TR0
MOV 30H,#12H
MOVR5,#20
--------------------------
LCALL FILLBUF
LCALL DISPLAY
TIMER:
PUSH PSW
PUSH ACC
PUSH 0
ORL TL0,#0B0H
MOVTH0,#3CH
DJNZ R5,TIMER0
ADDTIME:
MOV R0,#32H
MOV A,@R0
ADD A,#1
DA A
MOV @R0,A
CJNE A,#60H, TIMER0
MOV @R0,#0
DEC R0
CJNE A,#24H, TIMER0
TIMER0:
POP 0
POP ACC
POP PSW
FILLBUF:
MOV 42H,#10
MOV 45H,#10
MOV R1,#40H
MOV R2,#3
FILLBUF1:
ANLA,#0FH
MOV @R1,A
INC R1
ANL A,#0FH
MOV @R1,A
INC R1
DJNZ R2,FILLBUF1
-----------------------
DISPLAY:
MOV DPTR,#TAB
MOV R0,#40H
MOV R4,#7FH
MOV R2,#8
DISP_1:
MOV A,@R0
MOVC A,@A+DPTR
push acc
MOV A,#0FFh
LCALL ls164
pop ACC
MOV P0,A
MOV A,R4
LCALL DELAY
INC R0
RR A
MOV R4,A
DJNZ R2,DISP_1
----------------------
mov r6,#8
del1:
MOV R7,#125
DJNZ R7,$
djnz r6,del1
ls164:
clrp1.4
ls164_1:
mov r6,#8
ls164_2:
clrp1.3
rrca
jncls164_3
setbp1.3
ls164_3:
setbp1.4
djnzr6,ls164_2
DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7FH,6FH,40H
============================
1、内RAM和SFR的关系区别;
内RAM和外RAM的关系区别?
★内RAM为256字节,地址范围为00H-0FFH。
低128字节(00H-7FH)为真正RAM区;
高128字节(80H-0FFH)为特殊功能寄存器区SFR。
特殊功能寄存器SFR,又称专用寄存器,专用于控制、管理单片机内部算术逻辑部件、并行I/O口锁存器、串行口数据缓冲器、定时器/计数器、中断系统等功能模块的工作。
◆内RAM为256字节,地址范围为00H-0FFH。
外RAM由静态RAM组成,其容量大小由用户根据需要而定,最大可扩展到64KBRAM,地址是0000H-0FFFH。
CPU通过MOVX指令访问外部数据存储器,用间接寻址方式。
2、51单片机21个特殊功能寄存器的名称和归属?
MCS-51单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H-FFH中,以便能使用统一的直接寻址方式来访问。
这些特殊功能寄存器颁在以下各个功能部件中:
(1)CPU:
ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 接口 技术 复习资料
![提示](https://static.bingdoc.com/images/bang_tan.gif)