




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息科学与工程学院20162017学年第二学期实 验 报 告课程名称: 微处理器原理与应用 实验名称: 单片机软件及硬件实验 软件仿真实验2.2汇编程序实验2自我完成实验程序ORG 0000HAJMP STARTORG 0030HSTART:MOV DPTR,#TABLEMOV A,#00HMOV R7,#20HMOV R1,#30HMOV R2,#00HREAD:MOVC A,A+DPTRMOV R1,AINC R1INC R2MOV A,R2DJNZ R7,READMOV R0,#30HMOV R7,#31LOOP:MOV A,R0MOV R1,AMOV A,R7MOV R6,AMOV A,R0MOV R2,AMOV B,R1LOOP1:INC R1MOV A,R1CJNE A,B,L1L1:JC L2MOV B,AMOV A,R1MOV R2,AL2:DJNZ R6,LOOP1MOV A,BXCH A,R1MOV B,AMOV A,R2MOV R1,AMOV R1,BDJNZ R7,LOOPORG 08F0HTABLE:DB 1,3,9,2,17,4,11,6 DB 5,20,100,64,21,14,79,35 DB 92,7,91,23,65,16,13,18 DB 18,73,65,101,27,19,62,69END2.3 C语言程序实验#include#includechar data a32 _at_ 0x30;void main() char code b32=1,3,9,2,17,4,11,6,5,20,100,64,21,14,79,35,92,7,91,23,65,16,13,18,18,73,65,101,27,19,62,69; int i=0; int t=0; int j=0; for(i=0;i32;i+) ai=bj; j+; for(j=0;j31;j+) for(i=0;iai+1) t=ai; ai=ai+1; ai+1=t; while(1); 3.1基本并行I/O口实验ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60HMOV P2,#0FFHMOV 20H,#0FEHMOV R7,#8LOOP:SETB P1.0JNB P1.0,LOOP1AJMP LLOOP1:MOV A,20HMOV P2,AACALL DELAYMOV A,P2RL AMOV 20H,AL:DJNZ R7,LOOPDELAY:MOV R6,#200L1:MOV R5,#250DJNZ R5,$DJNZ R6,L1RETSJMP $END3.2扩展并行I/O口实验ORG 0000HAJMP STARTORG 0003HSTART:MOV SP,#60HMOV P0,#0FFHCLR P3.6STATE1:MOV DPTR,#0FE00HMOV A,#0F3HMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#0CHMOVX DPTR,AACALL DELAY2STATE2:MOV DPTR,#0FE00HMOV A,#0C3HMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#0FHMOVX DPTR,AACALL DELAY1STATE3:MOV DPTR,#0FE00HMOV A,#0FCHMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#03HMOVX DPTR,AACALL DELAY2STATE4:MOV DPTR,#0FE00HMOV A,#3CHMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#0FHMOVX DPTR,AACALL DELAY1AJMP STATE1DELAY1:MOV R7,#20DL2:MOV R6,#200DL1:MOV R5,#250DJNZ R5,$DJNZ R6,DL1DJNZ R7,DL2RETDELAY2:MOV R7,#100L2:MOV R6,#200L1:MOV R5,#250DJNZ R5,$DJNZ R6,L1DJNZ R7,L2RETEND3.3静态LED显示实验ORG 0000HAJMP STARTORG 0003HSTART:MOV SP,#60HMOV R4,#0AHMOV A,R3CLR AMOV R3,ASETB P1.0SETB P1.1LOOP1:JB P1.1,S1LOOP2:MOV A,R4LCALL CLOSES1:JB P1.0,LOOP1MOV R3,#0AHMAIN:MOV DPTR,#0FD00HMOV A,#0F9HMOVX DPTR,AMOV DPTR,#0FE00HMOV A,#0C0HMOVX DPTR,ALCALL DELAY1MOV DPTR,#0FD00HMOV A,#0C0HMOVX DPTR,ALOOP:MOV A,R3MOV DPTR,#TABLEMOVC A,A+DPTRMOV DPTR,#0FE00HMOVX DPTR,ALCALL DELAY1DEC R3MOV A,R3INC AJNZ LOOPSPARK:CLR P3.0LCALL DELAY2SETB P3.0LCALL DELAY2JB P1.1,SPARKAJMP LOOP2TABLE:DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90HCLOSE:MOV DPTR,#0FE00HMOV A,#0FFHMOVX DPTR,AMOV DPTR,#0FD00HMOVX DPTR,ARETDELAY1:MOV R7,#10L2:MOV R6,#200L1:MOV R5,#250DJNZ R5,$DJNZ R6,L1DJNZ R7,L2RETDELAY2:MOV R6,#100L:MOV R5,#250DJNZ R5,$DJNZ R6,LRETSJMP $END3.4矩阵键盘扫描实验#includereg52.h#includeintrins.h#define uchar unsigned char#define uint unsigned intsbit g0=P04;uchar code T_TABLE=200,160,120,80,40;uchar code key_code=0x22,0x12,0x21,0x11;void delay()uchar t,ms;ms=5;while(ms-)for(t=0;t120;t+);void main()int aa=0xfe;uint dir=1;uint speed=0;int temp,temp2,keycode;int j,key;g0=0;while(1)P3=0x30;temp=P3;if(temp&0x30)!=0x30)delay();delay();P3=0x30;temp=P3;if(temp&0x30)!=0x30)P3=0x03;temp2=P3;keycode=temp|temp2;for(j=0;j4;j+)if(keycode=key_codej)key=j;if(key=0) dir=1;if(key=1) dir=0;if(key=2) speed+;if(speed=5) speed=4;if(key=3)if(speed=0) speed+;speed-;switch (speed)case 0:P0=0xef;break;case 1:P0=0xf7;break;case 2:P0=0xfb;break;case 3:P0=0xfd;break;case 4:P0=0xfe;break;default:break;P3=0x03;while(!(P3=0x03);if(dir=1)P1=aa;for(j=0;jT_TABLEspeed;j+)delay();aa=_crol_(aa,1);/if(dir=0)P1=aa;for(j=0;jT_TABLEspeed;j+)delay();aa=_cror_(aa,1);3.7LCD1602显示实验#include /头文件#define uint unsigned int / #define uchar unsigned charsbit lcden=P15; /定义引脚sbit rs=P17;sbit rw=P16;sbit busy=P07;char i,j,temp,num;long a,b,c,d; /a,第一个数 b,第二个数 c,得数 d,余数float a_c,b_c;uchar flag,fuhao;/flag表示是否有符号键按下,fuhao表征按下的是哪个符号uchar code table=0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0;uchar code table1=0,1,2,3,4,5,6,7,8,9,0x2b-0x30,0x2d-0x30,0x2a-0x30,0x2f-0x30,0x01-0x30,0x3d-0x30;uchar code table2=!rorrE;void delay(uchar z) / 延迟函数uchar y;for(z;z0;z-) for(y=0;y0) c=a-b; else c=b-a; while(c!=0) write_date(0x30+c%10); c=c/10; if(a-b0) write_date(0x2d); write_date(0x3d); /再写= a=0;b=0;flag=0;fuhao=0; else if(fuhao=3) write_com(0x80+0x4f); write_com(0x04); c=a*b; while(c!=0) write_date(0x30+c%10); c=c/10; write_date(0x3d); a=0;b=0;flag=0;fuhao=0; else if(fuhao=4) write_com(0x80+0x4f); write_com(0x04);if(b=0) i=0;while(table2i!=0)write_date(table2i);i+;a=0;b=0;flag=0;fuhao=0;else if(a%b=0)&(b!=0) c=a/b; while(c!=0) write_date(0x30+c%10); c=c/10; if(a/b=0) write_date(0x30); write_date(0x3d); a=0;b=0;flag=0;fuhao=0;else if(a%b!=0)&(b!=0)d=a%b; while(d!=0) write_date(0x30+d%10); d=d/10; write_date(0x2e);write_date(0x2e);write_date(0x2e);c=a/b; while(c!=0) write_date(0x30+c%10); c=c/10; if(a/b=0) write_date(0x30); write_date(0x3d); a=0;b=0;flag=0;fuhao=0; break; main()init();while(1) keyscan();3.8 ADC0808/9信号采集实验#include reg51.h#include intrins.h#define byte unsigned char#define word unsigned intbyte data line16;byte code numchar=0,1,2,3,4,5,6,7,8,9;sbit RS = P20;sbit RW = P21;sbit E = P22;sbit clk = P23;sbit start = P24;sbit oe = P25;sbit out = P26;sbit eoc = P27;byte ADdata1,ADdata0,f1,f2,f3;word num,frequency,t;bit ADend;void delayms(word ms)word i,j;for(i=0;ims;i+)for(j=0;j120;j+);bit lcd_busy()bit flag;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();_nop_();flag=(bit)(P1&0x80);E=0;return flag;void lcd_wcmd(byte cmd)while(lcd_busy();RS=0;RW=0;E=0;_nop_();_nop_();P1=cmd;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;void lcd_clr()lcd_wcmd(0x01);delayms(2);void lcd_wdat(byte dat)while(lcd_busy();RS=1;RW=0;E=0;_nop_();_nop_();P1=dat;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;void lcd_init()delayms(15);lcd_wcmd(0x38);delayms(5);lcd_wcmd(0x0c);delayms(5);lcd_wcmd(0x06);delayms(5);lcd_wcmd(0x01);delayms(5); /以上为lcd显示程序 ,以下为AD程序void displaystr(byte m)byte i;switch(m)case 0:lcd_wcmd(0x80);break;case 1:lcd_wcmd(0xc0);break;i=0;while(linei!=0)lcd_wdat(linei);/delayms(1);i+; /以上为lcd显示程序 ,以下为AD程序void s_T0() interrupt 1EA=0;t+;if(t=20)frequency=num/2;f3=frequency/100;f2=(frequency%100)/10;f1=frequency%10;num=0;t=0;TH0=0x3c;TL0=0xb0;EA=1;void s_T1()interrupt 3clk=clk;void readAD()/读取adstart=0;while(eoc!=1);ADdata0=ADdata1;P0=0xff;_nop_();_nop_();_nop_();_nop_();oe=1;ADdata1=P0;oe=0;ADend=1;void operation()while(!ADend);if(ADdata0128)|(ADdata0128)&(ADdata1128)num+;out=1;_nop_();_nop_();_nop_();_nop_();_nop_();out=0;void main()TMOD=0x21;TH1=0xf6; /246TL1=0xf6;TH0=0x3c; /60TL0=0xb0;EA=1;ET1=1;ET0=1;TR1=1;TR0=1;out=0;start=0;ADdata0=0;ADdata1=0;t=0;lcd_init();lcd_clr();delayms(2);while(1)ADend=0;start=1;/delayms(1);/start=0;readAD();operation();line0=f;line1=:;line2=numcharf3;line3=numcharf2;line4=numcharf1;line5=H;line6=z;line7=0;displaystr(0);硬件实验实验4.1:按键声光报警实验源程序:#include#define uint unsigned int#define uchar unsigned charsbit bell=P11; /P1.1口位赋值给铃声sbit led=P10; /P1.0口位赋值给灯sbit key0=P12; /P1.2口位赋值给按键uint count;/*主程序*/void main() /按键按下后就触发中断 EA=1; /开放中断EX0=1; /允许外部中断0中断IT0=0; /外部中断0设置为电平触发方式while(1); /循环执行void delay(uint count) /延时1ms uint x,y; for(x=count;x0;x-) for(y=120;y0;y-); void show(uint count) uint i;for(i=0;i=10) /到10清零按键数count=0; EA=1; /开放中断实验 4.5:8255 并行 I/O 扩展及交通信号灯控制实验#include#include#include / 可使用其中定义的宏来访问绝对地址#define uchar unsigned char#define uint unsigned int#define PA XBYTE0x7FFC/PA指代外部数据存储器7FFCh的地址#define COM XBYTE0x7FFF /由P0 P2口联合输出地址sbit P30=P30;sbit P31=P31;uint temp,shi,ge,t;uchar a;void show(uint temp);void delay();void delays();void init_8255();void init_8255()COM=0x80; / c = out, a = out,b = outvoid delay() /延时500MS子程序 uint i,j; for(i=500;i0;i-) for(j=120;j0;j-);void delays() /延时1S子程序 uint i,j; for(i=1000;i0;i-) for(j=120;j0;j-);/*主程序*/void main() init_8255(); TMOD=0x01; /设定工作模式1 EA=1; /开放中断 ET0=1; /允许T0中断 TF0=0; /定时器0溢出标志位 while(1) a=0x26; /变量a赋初值 for(temp=25;temp19;temp-) /绿灯倒计时25s a=a-1; PA=0x69; /东西绿灯亮 show(a); /调用数码管显示子程序 delays(); /延时1s a=0x1a; /变量a赋值 for(temp=19;temp9;temp-) /倒计时 a=a-1; PA=0x69; /东西绿灯亮 show(a); delays(); a=0x0a; for(temp=9;temp0;temp-) a=a-1; PA=0x69; show(a); delays(); for(t=5;t0;t-) /绿灯闪烁5s a=0; /当计时值为0时闪烁show(a); PA=0xeb; /东西绿灯灭 delay(); /延时0.5s PA=0x69; /东西绿灯亮 delay(); /延时0.5s a=0x26; for(temp=25;temp19;temp-) /绿灯倒计时25s a=a-1; PA=0x96; /南北绿灯亮 show(a); delays(); a=0x1a; for(temp=19;temp9;temp-) a=a-1; PA=0x96; show(a); delays(); a=0x0a; for(temp=9;temp0;temp-) a=a-1; PA=0x96; show(a); delays(); for(t=5;t0;t-) /绿灯闪烁5s a=0; /当计时值为0时闪烁show(a); PA=0xbe; /南北绿灯灭 delay(); /延时0.5s PA=0x96; /南北绿灯亮 delay(); /延时0.5s void show(uint a) /显示子程序 SCON=0x00; /工作模式0 SBUF=a; /将变量a的值送给缓存寄存器 while(!TI) /等待发送是否完成 TI=0; /中断标志位清零实验 4.7:7279 键盘扫描及动态 LED 显示实验#include /* 函数定义 *#include#define uchar unsigned char#define uint unsigned int#define RESET 0xa4 / 复位指令#define RL 0xa1 /左移指令#define DECODE1 0xc8 /译码方式1#define READ 0x15 /读键盘指令void delay1(void);/ 长延时void delay2(void);void write7279(uchar, uchar); / 写入到7279uchar read7279(uchar);/ 从7279读出void send_byte(uchar);/ 发送一个字节uchar receive_byte(void);/ 接收一个字节uchar keyma=0x1b,0x13,0x0b,0x03,0x1a,0x12,0x0a,0x02,0x19,0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市交通与规划专业期末考试试题及答案
- 2025注册验船师考试(C级船舶检验专业综合能力)综合能力测试题及答案二
- 2025年高压电工面试必-备知识及模拟题解析
- 2025年R2移动式压力容器充装特种作业证考试题库及答案
- 2025年人力资源专员中级实务操作模拟题及答案
- 样品制作相关知识培训课件
- 公务员面试题目益智题及答案
- 2025年艺术设计专业入学笔试模拟试题及答案解析
- 2025年工会招聘面试高频考点与模拟题解析含答案
- 2025年数据分析师专业技能认证面试题详解
- 2025至2030中国电子束灭菌服务行业项目调研及市场前景预测评估报告
- 模锻工艺培训课件
- 血液透析导管感染
- 静脉溶栓病例汇报
- 国家电投集团招聘考试试题及答案
- 2025届黑龙江省龙东地区数学八下期末学业质量监测试题含解析
- 医疗项目可行性研究报告【范本模板】
- 北京市海淀区师达中学2025年七下数学期末考试试题含解析
- IATF16949:2016内审员培训试卷含答案
- 机械基础教案
- 矿山租用土地协议书
评论
0/150
提交评论