单片机实验总结_第1页
单片机实验总结_第2页
单片机实验总结_第3页
单片机实验总结_第4页
单片机实验总结_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序由 410 出品 与老师的不大一样 此 处省去 1 万字 最终解释归 410 所有 1 试编写程序 统计片内 RAM 30H 50H 单元中 FFH 的个数 并将统计结果存 51H mov r0 30h 把 30h 赋给 R0 mov r1 00h 把 00h 赋给 R1 loop cjne r0 0ffh next 把 R0 所指的地址里的数 地址 30h 中的数 与 0ffh 比较 inc r1 若为 0ffh 则 R1 加 1 计算 0ffh 的个数 next inc r0 若不一样则 R0 加 1 即把 R0 里的地址加 1 R0 将指向 下一个地址 cjne r0 51h loop 比较 R0 所存的地址与 51h 若不等则跳回 loop 继续执行 mov 51h r1 若相等 R0 里的数就为 51h 完成 30h 到 50h 的 计 数 将 R1 里的值赋到地址 51h 里 即地址 51h 中 存储着 0ffh 的个数 sjmp 等待 end 2 从片内 RAM 30H 单元开始存放着一组无符号数 其个数存在 21H 单元中 试编写程序 找出其中最小的数 并将其存入 20H 单元中 mov r0 30h 把 30h 赋给 R0 mov a r0 把 R0 所指 30H 中的数赋给 a a 中就是地址 30h 中的 无 符号数 mov r1 21h 把 21h 中的数赋给 R1 loop inc r0 R0 加 1 即 R0 将指向下一个地址 mov 30h r0 把 R0 所指地址的数给到地址 30h 中 cjne a 30h chk 比较 a 中的数与地址 30h 中的数的大小 若 a 中的 数 30H 中的数 则 Cy 0 否则相反 chk jc lop 判断 Cy 是否为 1 若是 则执行下面程序 否则跳至 lop 继 续执行 mov a r0 把 R0 所指地址中的数给 a 即把最小数赋给了 a lop djnz r1 loop R1 减一 程序跳至 loop 继续执行 循环直至 R1 减到 0 mov 20h a 把 a 中的数赋到地址 20h 中 end 3 设片外 RAM 2000H 单元中有一个 8 位二进制数 试编程将该数的低四位屏 蔽掉 并送回原存储单元 mov dptr 2000h 将片外地址 2000h 给 dptr movx a dptr 将片外地址 2000h 中的数赋给 a anl a 0f0h 将 a 中的数与 0f0h 与下 屏蔽低四位的数 movx dptr a 将屏蔽好的数送回到片外地址 2000h 中 end 4 试编写程序 求出片内 RAM20H 单元中 1 的个数 并将结果存入 21H 单元 mov 21h 0h 将地址 21h 中置 0 例如 20h 中是 01101000 mov r2 08h 将 8 赋给 R2 8 个有效数 mov a 20h 将地址 20h 中的数赋给 a lop rlc a 带 Cy 左循环移位 即第一次移位变为 11010000 Cy 0 jnc loop 判断 Cy 是否不等于 1 若不等 1 则程序跳至 loop inc 21h 若 Cy 等于 1 则地址 21h 中的数加 1 loop djnz r2 lop R2 减 1 程序跳至 lop 执行直至 R2 0 才执行下面的 end 5 试编一程序 分别统计在内部 RAM 的 30H 50H 单元的数据区中奇数和偶 数的个数 并将奇数和偶数的个数分别存放在 51H 和 52H 单元中 mov r0 30h 把 30h 给 R0 mov r1 20h 把 20h 给 R1 mov 51h 0 mov 52h 0 把地址 51h 52h 中的数置零 L1 mov b 02h 把 2h 给 b mov a r0 把 R0 所指地址中的数给 a div ab a 除以 b 商给 a 余数 b mov a b 把 b 的数给 a cjne a 0 L2 比较 a 与 0 的大小 若不等跳至 L2 inc 52h 若相等地址 52h 中的数加一 jmp L3 跳至 L3 L2 inc 51h 地址 51h 中的数加一 L3 inc r0 R0 加一 djnz r1 L1 R1 减一 跳至 L1 执行 jmp 等待 end 6 在 2000H 2004H 单元中 存有 5 个压缩的 BCD 码 试编程将它们转换成 ASCII 码 并存入 2005H 开始的连续单元中 mov dph 20h mov dpl 00h mov r0 5h mov r1 0h lop mov dpl r1 movx a dptr mov b a anl a 0fh orl a 30h mov dpl r0 movx dptr a inc r0 xch a b swap a anl a 0fh orl a 30h mov dpl r0 movx dptr a inc r0 inc r1 cjne r1 5h lop End 7 参考书中 P109 页 编写 C 语言和汇编语言的流水灯程序 include include define uchar unsigned char define uint unsigned int void delayms t uint i for t 0 t for i 0 i 120 i void main uint i while 1 P1 0 xfe for i 0 i 8 i P1 crol P1 1 delayms 300 8 使用 89C51 的 P1 连接到 8 颗 LED P1 在正常状况下会输出跑马灯 然后通 过用户触动外部按钮来中断 INT0 当 INT0 引脚有低电位的脉冲出现时 8 个 LED 会一闪一灭 4 次 include include define uchar unsigned char define uint unsigned int void delayms t uint i for t 0 t for i 0 i 120 i void intx0 isr interrupt 0 uint i for i 0 i 4 i P1 0 xff delayms 200 P1 0 x00 delayms 200 void main uint i IT0 1 EX0 1 EA 1 while 1 P1 0 xfe for i 0 i 8 i P1 crol P1 1 delayms 300 9 使用 89C51 的 P1 连接到 8 颗 LED 使用外部中断方式 程序执行时 当用 户每按一次按钮的中断进行计数 将其数值按二进制数在 P1 口驱动 LED 灯上 显示出来 计数到 9 次之后又会恢复到 0 分别使用汇编语言和 C51 编程 include define uchar unsigned char define uint unsigned int uint j 255 void intx0 isr interrupt 0 j P1 j if j 245 j 255 P1 255 void main P1 255 IT0 1 EX0 1 EA 1 while 1 10 并行换串行输出 include include define uchar unsigned char define uint unsigned int sbit spl P2 5 void delay uint time uint j 0 for time 0 time for j 0 j 120 j void main SCON 0 x10 while 1 spl 0 spl 1 if RI RI 0 P0 SBUF delay 100 11 串行换并行输出 include include define uchar unsigned char define uint unsigned int sbit clk P3 1 void delay uint time uint j 0 for time 0 time for j 0 j 120 j void main uint dataa 1 SCON 0 clk 1 while 1 unsigned int j SBUF dataa if TI TI 0 dataa crol dataa 1 delay 500 12 按键显示相应的数 数码管 include define uint unsigned int define uchar unsigned char uchar Pre 0 xff no 0 xff Uchar code DSY CODE 0 x3f 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 void delay uint ms uchar i while ms for i 0 i 120 i void key uchar tmp P1 0 xf0 delay 1 tmp P1 0 xf0 switch tmp case 0 x10 no 0 break case 0 x20 no 1 break case 0 x40 no 2 break case 0 x80 no 3 break default no 16 P1 0 x0f delay 1 tmp P1 0 x0f switch tmp case 2 no 0 break case 4 no 4 break case 8 no 8 break void main P0 0 x00 while 1 P1 0 xf0 if P1 0 xf0 key if Pre no P0 DSY CODE no 1 Pre no delay 100 13 数码管循环显示 0 F include define uchar unsigned char define uint unsigned int uchar code table 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e void delay t uint i while t for i 0 i 121 i void main uint j 0 while 1 j j 16 P0 table j delay 300 14 甲机通过串口控制乙机 LED 闪烁 甲机 include define uchar unsigned char define uint unsigned int sbit LED1 P0 0 sbit LED2 P0 3 sbit K1 P1 0 uchar Operation No 0 操作代码 延时 void DelayMS uint ms uchar i while ms for i 0 i 120 i 向串口发送字符 void Putc to SerialPort uchar c SBUF c while TI 0 TI 0 主程序 void main LED1 LED2 1 SCON 0 x40 串口模式 1 允许接收 TMOD 0 x20 T1 工作模式 2 PCON 0 x00 波特率不倍增 TH1 0 xfd TL1 0 xfd TI 0 TR1 1 while 1 DelayMS 100 if K1 0 按下 K1 时选择操作代码 0 1 2 3 while K1 0 Operation No Operation No 1 4 switch Operation No 根据操作代码发送 A B C 或停止发送 case 0 Putc to SerialPort X LED1 LED2 1 break case 1 Putc to SerialPort A LED1 LED1 LED2 1 break case 2 Putc to SerialPort B LED2 LED2 LED1 1 break case 3 Putc to SerialPort C LED1 LED1 LED2 LED1 break 乙机 include define uchar unsigned char define uint unsigned int sbit LED1 P0 0 sbit LED2 P0 3 sbit K2 P1 0 uchar NumX 1 延时 void DelayMS uint ms uchar i while ms for i 0 i 120 i 主程序 void main LED1 LED2 1 SCON 0 x50 串口模式 1 允许接收 TMOD 0 x20 T1 工作模式 2 TH1 0 xfd 波特率 9600 TL1 0 xfd PCON 0 x00 波特率不倍增 RI 0 TR1 1 while 1 DelayMS 100 if RI 如收到则 LED 则动作 RI 0 switch SBUF 根据所收到的不同命令字符完成不同动作 case X LED1 LED2 1 break 全灭 case A LED1 0 LED2 1 break LED1 亮 case B LED2 0 LED1 1 break LED2 亮 case C LED1 LED2 0 全亮 15 乙机通过串口控制甲机数码管显示 甲机 include define uchar unsigned char define uint unsigned int sbit LED1 P1 0 sbit LED2 P1 3 sbit K1 P1 7 uchar Operation No 0 操作代码 数码管代码 uchar code DSY CODE 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 0 x7f 0 x6f 延时 void DelayMS uint ms uchar i while ms for i 0 i 0 else P0 0 x00 乙机 include define uchar unsigned char define uint unsigned int sbit LED1 P1 0 sbit LED2 P1 3 sbit K2 P1 7 uchar NumX 1 延时 void DelayMS uint ms uchar i while ms for i 0 i 120 i 主程序 void main LED1 LED2 1 SCON 0 x50 串口模式 1 允许接收 TMOD 0 x20 T1 工作模式 2 TH1 0 xfd 波特率 9600 TL1 0 xfd PCON 0 x00 波特率不倍增 RI TI 0 TR1 1 IE 0 x90 while 1 DelayMS 100 if K2 0 while K2 0 NumX NumX 11 产生 0 10 范围内的数字 其中 10 表示关闭 SBUF NumX while TI 0 TI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论