当前位置:文档之家› 单片机接口技术与实验附原理图及源程序

单片机接口技术与实验附原理图及源程序

《单片机接口技术与实验》姓名:学号:年级:专业:电子信息科学与技术实验二并行口输入输出实验——循环彩灯控制一、实验功能(1).P1 口接8 个开关,P0 口接8 个灯,每个开关对应一个灯,实时读取开关状态,开关闭合时,灯亮。

开关断开时,灯灭。

二、实验原理图注意:因为P0口作为输出口时必须接上拉电阻,为简化起见,此处接到P2口上三、实验程序org 0000hljmp mainorg 0100hmain: mov p1,#0ffhmov p2,p1ajmp mainend(2)一、实验功能用5 个开关K0~K4,控制P0 口所接8 个灯的循环,各开关的功能要求如下:(1)K1~K2 分别选择灯的四种闪动方式;(2)K3 用于控制灯的循环方式(顺时针或逆时针);(3)K4 用于选择灯的两种循环速度(4)K0 用于引发外部中断,在外部中断子程序中,读取通过K1-K4 所设定的循环彩灯的工作方式,并按所设定的工作方式控制彩灯运行。

二、实验原理图三、实验流程图四、实验程序ORG 0000HLJMP MAINORG 0003HLJMP INT0PR0ORG 0100H MAIN: MOV P1,#0FFHMOV SP,#60HSETB EX0SETB IT0SETB EAMOV C,P1、2MOV 50H,CMOV C,P1、3MOV 51H,CJB P1、0,NEXT1JNB P1、0,NEXT2NEXT1: JB P1、1,CIRCLE1JNB P1、1,CIRCLE2 NEXT2: JB P1、1,CIRCLE3JNB P1、1,CIRCLE4 CIRCLE1: MOV A,#80HLJMP STEP0 CIRCLE2: MOV A,#0C0HLJMP STEP0 CIRCLE3: MOV A,#0AAHLJMP STEP0 CIRCLE4: MOV A,#0E0HLJMP STEP0STEP0: MOV P2,AJB 50H,S1JNB 50H,S2STEP1: JB 51H,LOOP1JNB 51H,LOOP2S1: LCALL DELAY1LJMP STEP1S2: LCALL DELAY2LJMP STEP1 DELAY1: MOV R7,#100D1: MOV R6,#100D2: MOV R5,#10D3: DJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RETDELAY2: MOV R7,#200D4: MOV R6,#100D5: MOV R5,#10D6: DJNZ R5,D6DJNZ R6,D5DJNZ R7,D4RETLOOP1: RL ALJMP STEP0 LOOP2: RR ALJMP STEP0ORG 0400HINT0PR0:MOV C,P1、2MOV 50H,CMOV C,P1、3MOV 51H,CJB P1、0,WORK1JNB P1、1,WORK2WORK1: JB P1、1,L1JNB P1、1,L2WORK2: JB P1、1,L3JNB P1、1,L4L1: MOV A,#80HLJMP PASSL2: MOV A,#0C0HLJMP PASSL3: MOV A,#0AAHLJMP PASSL4: MOV A,#0E0HLJMP PASSPASS: RETIEND实验三七段LED 数码管控制实验一、实验功能1.实验采用4 位一体的数码管,用P1 口通过驱动芯片控制段码输出信号线,P0 口通过驱动芯片控制位选线:(1)当开关K0 接低电平时,第一位依次显示0~F,然后第二位、第三位、第四位,再循环回第一位。

(2)当开关K0 接高电平时,四位动态显示“HELP”二、实验原理图三、实验流程图四、实验程序org 0000hljmp mainorg 0100hmain:mov p2,#0ffhsetb p1、0mov dptr,#tabmov r0,#0mov a,#00hloop1: mov r0,#00hjnb p1、0,hsjmp loop2h: mov p2,#0fehlcall lightmov p2,#0fdhlcall lightmov p2,#0fbhlcall lightmov p2,#11101111blcall lightsjmp loop1light: jb p1、0,loop2mov a,r0movc a,@a+dptrinc r0mov p0,alcall delay1cjne r0,#16,lightmov r0,#0retloop2: mov p2,#0fehmov p0,#73hlcall delay1jnb p1、0,loop1mov p2,#0fdhmov p0,#38hlcall delay1jnb p1、0,loop1mov p2,#0fbhmov p0,#79hlcall delay1jnb p1、0,loop1mov p2,#11101111bmov p0,#76hlcall delay1jnb p1、0,loop1sjmp loop1tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71hdelay1:MOV R3,#10D2: MOV R2,#100D1: MOV R1,#100D0: DJNZ R1,D0DJNZ R2,D1DJNZ R3,D2RETend实验四定时器中断实验一、实验功能1.用 T0 定时器实现1 秒定时,控制一个LED 亮1 秒,灭1 秒,并不断循环。

二、实验原理图三、实验流程图四、实验程序org 0000hljmp main org 000bh ljmp t0pr0 org 0100h main: mov sp,#60h mov tmod,#01h mov th0,#0b8h mov tl0,#00h mov r0,#100 setb ea setb et0 setb tr0 loop: sjmp $ ljmp loopt0pr0: djnz r0,wcpl p2、7mov r0,#100w: mov th0,#0b8hmov tl0,#00hretiend2、一、实验功能实现一个4 位秒表:(1)用开关K0 模拟秒表的启动、停止、清零功能,按一次启动计时,按一次停止,再按一次清零,在三个状态中循环。

(2)最低位按1/10 秒计数,依次计数单位为1/10 秒,1 秒,1 分(3) 要求K0 使用外部中断,优先级高于T0 的优先级二、实验原理图三、实验流程图四、实验程序org 0000hljmp mainorg 0003hljmp intx0org 000bhljmp t0pr0org 0100hmain: mov tmod,#01hmov th0,#0b8hmov tl0,#00hmov p2,#0ffhmov r0,#1mov r1,#0mov r2,#0mov r3,#0mov r4,#0mov r5,#0mov a,#0mov dptr,#tabsetb easetb ex0setb it0setb tr0setb px0setb et0k: lcall aaajmp kaaa: mov p2,#0fehmov a,r2lcall looplcall mmmov p2,#0fdhmov a,r3lcall looplcall mmmov p2,#0fbhmov a,r4lcall looplcall mmmov p2,#11101111bmov a,r5lcall looplcall mmretmm: djnz acc,$djnz acc,$retloop: movc a,@a+dptrmov p0,arettab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh intx0: inc r0cjne r0,#1,stsetb tr0retist: cjne r0,#2,wclr tr0retiw: mov a,#0mov r0,amov r1,amov r2,amov r3,amov r4,amov r5,aretit0pr0: mov th0,#0b8hmov tl0,#00hinc r1cjne r1,#10,exitmov r1,#0inc r2cjne r2,#10,exitmov r2,#0inc r3cjne r3,#10,exitmov r3,#0inc r4cjne r4,#6,exitmov r4,#0inc r5cjne r5,#10,exitmov r5,#0exit: retiend实验五脉冲宽度与周期测量实验一、实验功能同时测量脉冲宽度与周期,由开关K0 选择显示脉冲宽度还就是显示脉冲周期。

二、实验原理图三、实验流程图四、实验程序ORG 0000Hlimp mainorg 000bhljmp torg 0100hmain: mov tmod,#oahmov th0,#48hmov tl0,#48hsetb easetb et0mov dptr,#tabmov a,#0mov r0,#0mov r1,#0mov r2,#0mov r3,#0mov r4,#0jb p1、0,b0loop0: jb p3、2,loop0setb tr0loop1: jnb p3、2,loop1loop2: jb p3、2,loop2 loop3: jnb p3、2,loop3 loop4: jb p3、2,loop4clr tr0ljmp loopb0: jb p3、2,b0setb tr0b1: inb p3、2,b1b2: jb p3、2,b2clr tr0loop: mov a,tl0subb a,#48hmov b,#2div abmov r1,bmov r2,amov a,r0mov b,#10div abmov r3,badd a,#10mov r4,amov p2,#11111110bmov a,r1lcall wwwlcall zmov p2,#11111101bmov a,r2lcall wwwlcall zmov p2,#11111011bmov a,r3lcall wwwlcall zmov p2,#11110111bmov a,r4lcall wwwlcall zljmp mainwww: movc a,@a+dptrmov p0,aretz: djnz acc,$djnz acc,$rettab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h、7fh,6fhdb0bfh,86h,0d8h,0cfh,0e6h,0edh,0fdh,87h,0ffh,0efhorg 0200ht: inc r0retiend实验六串行通信实验一、实验功能利用串行口方式0 实现一个七段数码管的显示控制,轮流显示0~9十个数码二、实验原理图三、实验流程图四、实验程序org 0000hajmp main main: mov scon,#00hmov dptr,#tablemov r0,#10clr p1、0 NEXT: djnz r0,sendajmp main send: clr amovc a,@a+dptrmov sbuf,ajnb ti,$clr tiinc dptracall delayajmp nextdelay: mov r1,#50loop1: mov r2,#100loop2: mov r3,#50djnz r3,$djnz r2,loop2djnz r1,loop1rettable: DB 3Fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end。

相关主题