欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    集美大学信息单片机实验.docx

    • 资源ID:12914493       资源大小:20.01KB        全文页数:29页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    集美大学信息单片机实验.docx

    1、集美大学信息单片机实验1. 实验2-1EXTRN CODE(Display8, GetBCDKey)BUFFER2 DATA 70H;8字节显示缓冲区BUFFER DATA 30H BLOCK data 50HRESULT DATA 40HF1 BIT 0D1H ;PSW.1 ORG 0000H LJMP START ORG 0100HSTART: MOV SP,#60H CLR F1 ;先清除显示,再接收键输入START1: MOV R0,#BUFFER MOV A,#4 ;按键次数 LCALL GetBCDKey ;得到双字节十进制数(乘数) MOV R0,#BUFFER ACALL BC

    2、D2B ;转换成二进制数 MOV BLOCK,R3 MOV BLOCK+1,R4 SETB F1 ;接收到第一个键,才清除显示 MOV R0,#BUFFER MOV A,#4 ;按键次数 LCALL GetBCDKey ;得到双字节十进制数(减数) MOV R0,#BUFFER ACALL BCD2B MOV BLOCK+2,R3 MOV BLOCK+3,R4 MOV R4,BLOCK ;四个BCD入口参数 MOV R5,BLOCK+1 MOV R6,BLOCK+2 MOV R7,BLOCK+3 MOV R0,#RESULT lCALL MLTY MOV R3,RESULT MOV R2,RE

    3、SULT+1 MOV R1,RESULT+2 MOV R0,RESULT+3 ACALL B4toD4 ;字节二进制数转十进制数;R0R1R2R3为二进制数,R4R5R6R7为压缩BCD码 MOV A,R7 ANL A,#0FH MOV BUFFER2,A MOV A,R7 ANL A,#0F0H SWAP A MOV BUFFER2+1,A MOV A,R6 ANL A,#0FH MOV BUFFER2+2,A MOV A,R6 ANL A,#0F0H SWAP A MOV BUFFER2+3,A MOV A,R5 ANL A,#0FH MOV BUFFER2+4,A MOV A,R5 AN

    4、L A,#0F0H SWAP A MOV BUFFER2+5,AMOV A,R4 ANL A,#0FH MOV BUFFER2+6,A MOV A,R4 ANL A,#0F0H SWAP A MOV BUFFER2+7,A MOV R0,#BUFFER2 LCALL Display8 sjmp $ BCD2B: MOV R1,#BUFFER MOV R2,#2S: MOV A,R1 PUSH ACC ANL A,#0FH MOV R0,A POP ACC JNB ACC.4,NEXT1 ;分别判断4,5,6,7位是否为1,分别加上10,20,40,80 XCH A,R0 ADD A,#10 X

    5、CH A,R0NEXT1: JNB ACC.5,NEXT2 XCH A,R0 ADD A,#20 XCH A,R0NEXT2: JNB ACC.6,NEXT3 XCH A,R0 ADD A,#40 XCH A,R0NEXT3: JNB ACC.7,NEXT4 XCH A,R0 ADD A,#80 XCH A,R0NEXT4: MOV A,R0 PUSH ACC INC R1 DJNZ R2,S POP ACC MOV R0,A POP ACC MOV B,#100 ;高2位(千位、百位)乘以100 MUL AB ADD A,R0 MOV R3,A ;转换成的二进制数放在R4R3中 MOV A,

    6、B ADDC A,#0 MOV R4,A RET ;字节二进制数转十进制数;R0R1R2R3为二进制数,R4R5R6R7为压缩BCD码;该子程序也可以模仿书上(胡汉才)例4.22,采用除以10、其余数为个位数字,其商继续除以10得十位数字,依次类推B4toD4: CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,A MOV B,#32LOOP: CLR C MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R1 RLC A MOV R1,A MOV A,R0 RLC A MOV R0,A MOV A,R7

    7、;算法举例:例如数据为0010 0100(36),则过程为 ADDC A,R7 ; A R7 DA A ; 0 0 MOV R7,A ; 0 0 MOV A,R6 ; 1 1 ADDC A,R6 ; 2 2 DA A ; 4 4 MOV R6,A ; 9 9 MOV A,R5 ; 18 18 ADDC A,R5 ; 36 36 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ B,LOOP RET MLTY: MOV A,R6 MOV B,R4 MUL AB MOV R0,A MOV R3,B MOV A,R7 MOV B,R4 MUL A

    8、B ADD A,R3 MOV R3,A MOV A,B ADDC A,#00H MOV R2,A MOV A,R6 MOV B,R5 MUL AB ADD A,R3 INC R0 MOV R0,A MOV A,R2 ADDC A,B MOV R2,A MOV R1,#00H JNC NXT1 INC R1NXT1: MOV A,R7 MOV B,R5 MUL AB ADD A,R2 INC R0 MOV R0,A MOV A,B ADDC A,R1 INC R0 MOV R0,A RET end2.实验2-2ORG 0000H LJMP MAIN ORG 1000H MAIN: MOV R7,

    9、#15 CLR F0 LOOP1:PUSH 07H MOV R0,#30H MOV R1,#31H SJMP LOOP2 LOOP4:DEC R7 SJMP LOOP1 LOOP2:MOV A,R0 SUBB A,R1 JC LOOP3 SETB F0 MOV A,R0 XCH A,R1 XCH A,R0 LOOP3:INC R0 INC R1 DJNZ R7,LOOP2 POP 07H JB F0,LOOP4 END3.实验3-1电子钟EXTRN CODE(GetbcdkEY,Display8) BUFFER1 DATA 40H BUFFER2 DATA 60H ORG 0000H LJMP

    10、 MAIN ORG 000BH LJMP ITOP ORG 1000H MAIN: CLR PSW.1 MOV R0,#BUFFER1 MOV A,#06H ; LCALL GetBCDKey MOV 20H,#20 MOV TMOD,#01H MOV TL0,#0b0H MOV TH0,#3cH SETB TR0 SETB ET0 SETB EA SJMP $ ITOP:PUSH PSW PUSH ACC MOV TL0,#0b0H MOV TH0,#3cH DJNZ 20H,LOOP MOV 20H,#20 ;重置中断次数 MOV A,#01H ;秒增加1 ADD A,42H DA A ;

    11、秒单元十进制调整 MOV 42H,A CJNE A,#60H,LOOP ;是否到60秒,未到返回 MOV 42H,#00H ;记满30秒,秒单元请零 MOV A,#01H ;分单元增1 ADD A,41H DA A ;分单元十进制调整 MOV 41H,A CJNE A,#60H,LOOP ; MOV 41H,#00H MOV A,#01H ADD A,40H DA A MOV 40H,A CJNE A,#24H,LOOP MOV 40H,#00H LOOP:MOV R0,#40H MOV R6,#03H MOV R1,#50H DECOMP:MOV A,R0 SWAP A ANL A,#0FH

    12、 MOV R1,A INC R1 MOV A,R0 ANL A,#0FH MOV R1,A INC R0 INC R1 DJNZ R6,DECOMP MOV R0,#BUFFER2 MOV BUFFER2,55H MOV BUFFER2+1,54H MOV BUFFER2+2,53H MOV BUFFER2+3,52H MOV BUFFER2+4,51H MOV BUFFER2+5,50H MOV BUFFER2+6,#10H MOV BUFFER2+7,#10H LCALL Display8 POP ACC POP PSW RETI END 4.秒表EXTRN CODE(GetbcdkEY,

    13、Display8) BUFFER1 DATA 40H BUFFER2 DATA 60H ORG 0000H LJMP MAIN ORG 000BH ; 定时器T0中断LJMP ITOP ORG 1000H MAIN: CLR PSW.1 ;先清显示,再接收键盘输入 MOV R0,#BUFFER1 MOV A,#06H ;按键次数6次 LCALL GetBCDKey ;调键盘程序 MOV 20H,#1 ;循环次数 MOV TMOD,#01H ;计时器T0选择方式一 16位计数器 MOV TL0,#18H MOV TH0,#0FCH SETB TR0 ;开计时器T0 SETB ET0 SETB E

    14、A DAN: JB P1.0, $ ;比较P1.0口(暂停口),若为0,则往下执行,若为1,则在本行等待 CLR TR0 ;关计时器,暂停秒表计数 JNB P1.0,$ ;比较P1.0口(暂停口),若为1则往下执行,若为0,则在本行等待 SETB TR0 ;开计时器,继续秒表计数 JB P1.1, DAN ;比较P1.1口(清零口), 若为1,则跳DAN(继续等待),若为0,则往下执行(全部清零) MOV 40H,#00 ;微秒 单元清零 MOV 41H,#00 ;毫秒 单元清零 MOV 42H,#00 ;秒 单元清零 SJMP DAN ITOP:PUSH PSW PUSH ACC MOV T

    15、L0,#18H ;计时器T0重新赋初值 MOV TH0,#0FCH DJNZ 20H,LOOP ;减1,比较是否为0, 不为0则跳LOOP MOV 20H,#1 ;重新赋循环次数 MOV A,#01H ;微秒 单元+ 1 ADD A,40H DA A ;十进制调整 MOV 40H,A CJNE A,#99H,LOOP ; 微秒单元中的数字和99H比较,若小于等于99H, 则跳转到LOOP MOV 40H,#00H ; 微秒单元零 MOV A,#01H ;毫秒 单元 +1 ADD A,41H DA A MOV 41H,A CJNE A,#10H,LOOP MOV 41H,#00H ;毫秒单元 清

    16、零 MOV A,#01H ;秒单元 + 1 ADD A,42H DA A MOV 42H,A CJNE A,#60H,LOOP ;比较是否过了60秒 ? 过了则清零 MOV 42H,#00H ;秒单位请零LOOP:MOV R0,#40H ; 寄存器赋初值 ,为下面做准备 MOV R6,#03H ;次数3次 MOV R1,#50H ;保存到50H单位中DECOMP:MOV A,R0 SWAP A ;高低字节互换 ANL A,#0FH ; 取高字节 MOV R1,A ;高字节存到R1 INC R1 ;R1 地址 + 1 MOV A,R0 ANL A,#0FH MOV R1,A ;低字节存到 R1

    17、INC R0 INC R1 DJNZ R6,DECOMP ;上面从LOOP开始整个的意思就是把40H中的微秒,毫秒,秒的数据放到50H中,然后下面开始在LED上显示 MOV R0,#BUFFER2 MOV BUFFER2,51H MOV BUFFER2+1,50H MOV BUFFER2+2,53H MOV BUFFER2+3,52H MOV BUFFER2+4,55H MOV BUFFER2+5,54H MOV BUFFER2+6,#10H MOV BUFFER2+7,#10H LCALL Display8 POP ACC POP PSW RETI END 6、航标灯ORG 0000H LJ

    18、MP MAIN ORG 0003HLJMP IIE0ORG 000BH ; 定时器T0中断LJMP ITOP ORG 1000H MAIN: SETB EX0 ; SETB EA L: JB P3.2,L CLR TR0 SETB p1.0 LJMP LIIE0: push psw push ACC MOV 20H,#40 ;循环次数 MOV TMOD,#01H ; 计时器T0选择方式一 16位计数器 MOV TL0,#0B0H ;50ms MOV TH0,#3CH SETB ET0 SETB TR0 POP ACC POP PSW RETIITOP:PUSH PSW PUSH ACC MOV

    19、 TL0,#0B0H MOV TH0,#3CH DJNZ 20H,LOOP ;减1,比较是否为0, 不为0则跳LOOP MOV 20H,#40 ;重新赋循环次数 CPL P1.0 LOOP:POP ACC POP PSW RETI END 7、串行口接收ORG 0000H LJMP MAIN ORG 0023H LJMP SINT ORG 0100H MAIN: MOV SP, #60H MOV TMOD, #20H ;T1方式2MOV TH1, #0E8H MOV TL1, #0E8H MOV SCON, #0D0H ;串行口3 MOV PCON, #80H SETB ES CLR ET1

    20、SETB EA SETB TR1 MOV R0, #41H ;存入41H开始单元MOV R7, #0DH ;接收次数13次SJMP $ SINT: CLR RI MOV A, SBUFMOV C, P CPL CJNC L1 JNB RB8, ERR AJMP L2 L1: JB RB8, ERR L2: MOV R0, AINC R0 DJNZ R7, L3 ;比较是否接收13次CLR ES CLR ET1 CLR TR1 AJMP L3 ERR: CLR P1.0 ;点亮LED L3: RETI END8、串行口发送 ORG 0000H LJMP MAIN ORG 0023H LJMP S

    21、INT ORG 0100H MAIN: MOV SP, #60H MOV TMOD, #20H ;T1方式2MOV TH1, #0E8H MOV TL1, #0E8H MOV SCON, #0D0H ;串行口3 MOV PCON, #80H SETB ES CLR ET1 SETB EA SETB TR1 MOV DPTR ,#TAB ;要发送的数据存入DPTRMOV R7, #0DH ;发送次数13次SETB TI SJMP $ SINT: CLR TICLR A MOVC A, A+DPTR MOV C, P MOV TB8, C MOV SBUF, A INC DPTR DJNZ R7,

    22、 L1 JNB TI,$CLR ES CLR ET1 CLR TR1 L1: RETI TAB:DB J,M,U DB 2,0,0,9,8,2,0,0,2,0END9、并转串ORG 0000H LJMP MAIN ORG 0100H MAIN: clr p1.3 ;SERINIT: CLR P1.2 ;SH NOP SETB P1.2 ;;SH上升沿 CLR P1.3 ;;P1.3(CLK口)清零 MOV R5,#8 ; ;循环次数8次PRO: JB P3.0,NEXT ;;查询 P3.0 口. CLR C SJMP NEXT1NEXT: SETB C NEXT1: RLC A SETB P1

    23、.3 ;CLK一次 NOP CLR P1.3 DJNZ R5,PRO CPL A ;;取反A MOV P2,A ;;P1整个排线 LJMP INITDELAY: MOV R7,#200DELAY1: MOV R6,#125DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END10、串转并ORG 0000H LJMP MAIN ORG 0100H MAIN: CLR P1.3 ;CLK清零 SETB C MOV A,#0FeHINIT: MOV R5,#8 ;循环次数8次PRO: RRC A ;;A中内容带进位右移一位 JC NEXT ;;下面就是比较进位端

    24、CLR P1.2 SJMP NEXT1NEXT: setb P1.2 ;;然后开关P1.2 口NEXT1: SETB P1.3 NOP ;;CLK一次 CLR P1.3 DJNZ R5,PRO CALL DELAY ;;延时程序 CALL DELAY LJMP INIT DELAY: MOV R7,#255;200DELAY1: MOV R6,#255;125DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET END11、iic总线 SDA BIT P1.2 SCL BIT P1.3 A24C02_WRITE EQU 0A8H A24C02_READ EQU 0

    25、A9H ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#60H MOV DPTR ,#TAB ;;要发送的内容存入DPTR MOV R0,#30H MOV B,#0FHLOOP: CLR A MOVC A, A+DPTR MOV R0,A INC DPTR INC R0 DJNZ B,LOOP ;;上面到这是把TAB存入30H以后单元 MOV R1,#30H ; ;这部分开始是发送的 MOV R2,#40H MOV R0,#0FH ; ;次数15次WRITE_BYTE: LCALL START ; ;发送起始信号 MOV A,#A24C02_WRITE ;

    26、器件写地址,表示写操作 LCALL WRITE_8BITS ; ;写入8位 LCALL ACKNOWLEDGE ; ;等待从机应答 MOV A,R2 ;写入地址 LCALL WRITE_8BITS LCALL ACKNOWLEDGE MOV A,R1 ;写入数据 LCALL WRITE_8BITS LCALL ACKNOWLEDGE LCALL STOP ;;停止信号 LCALL ACKPOLLING INC R2 INC R1 DJNZ R0,WRITE_BYTE ;;是否发送15次? MOV R1,#50H ;;这部分开始是接收的 MOV R2,#40H MOV R0,#0FHREAD_B

    27、YTE: LCALL START MOV A,#A24C02_WRITE LCALL WRITE_8BITS LCALL ACKNOWLEDGE MOV A,R2 LCALL WRITE_8BITS LCALL ACKNOWLEDGE currentread: LCALL START MOV A,#A24C02_READ LCALL WRITE_8BITS LCALL ACKNOWLEDGE LCALL READ_8BITS MOV R1,A INC R1 DJNZ R0,currentread LCALL STOP SJMP $ WRITE_8BITS: MOV R7,#8WRITE_8BITS_1: RLC A CLR SCL LCALL DELAY_TIME MOV SDA,C SETB SCL LCALL DELAY_TIME DJNZ R7,WRITE_8BITS_1 CLR SCL RET READ_8BITS: MOV R7,#8READ_8BITS_1: CLR SCL LCALL DELAY_TIME SETB SCL ;SCL为


    注意事项

    本文(集美大学信息单片机实验.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开