单片机c语言实验题
一编写并调试一个双字节无符号十进制数加法程序。其功能为将被加数写入30H、31H单元,加数写入40H、41H单元,运行程序结果写入50H、51H、52H单元中,加法程序功能为:(30H)(31H)+(40H)(41H)=(50H)(51H)(52H)(都是高位在前、低位在后)。#include#include#include unsigned char a[5] _at_ 0 x50; unsigned char ww0 _at_ 0 x30;unsigned char ww1 _at_ 0 x31;unsigned char ww2 _at_ 0 x32;unsigned char ww3 _at_ 0 x33;unsigned char ww4 _at_ 0 x34;unsigned char ee0 _at_ 0 x40;unsigned char ee1 _at_ 0 x41;unsigned char ee2 _at_ 0 x42;unsigned char bdata BZW _at_ 0 x20; //标志位sbit BB0 = BZW^0; //标志位 0sbit BB1 = BZW^1; //标志位 1sbit BB2 = BZW^2; //标志位 2unsigned char xx;yy;zz;int i,k,y,z,x;void main(){ww0=0 x95; //存储器窗口 察看 30hww1=0 xa6; // 察看 31hww2=0 xb7; // 察看 32hww3=0 x88; // 察看 33hww4=0 x08; // 察看 34hk=ww0+ww1+ww2+ww3+ ww4; // 观察和堆栈窗口 察看 k=282ww4=k/4; // 察看 34h =0 xa0 ee0=ww4/100; //察看 40h =01xx=ww4%100; //察看 xx 观察和堆栈窗口 察看 xx=3cee1=xx/10; //察看 41h =06ee2=xx%10; //察看 42h =00if (ee0>2) BB0=1; //察看 20h 位 0if (ee1>=5) BB1=1; //察看 20h 位 1if (ee2<9) BB2=1; //察看 20h 位 2for(i=0,k=0 x55;i<5;i++,k++){a[i]=k; // 察看 存储器窗口 (50h---54h)}ACC=0 xa0; //专用寄存器窗口 察看 AB=0 xbb; //专用寄存器窗口 察看 Bswitch(ACC+1){case 0 xa1:TL0=0 x77;TH0=0 x88; //存储器窗口 察看 8ah,8ch break; case 0 xa2:TL0=0 x33;TH0=0 x44; //存储器窗口 察看 8ah, 8chbreak;default:TL0=0 x11; TH0=0 x22; //存储器窗口 察看 8ah, 8chbreak; }while(1);}实验二 端口的输入、输出实验二、实验内容本实验要求51单片机的一个I/O接4个开关,在通过另一个 I/O口控制7段数码显示相应的数字。开关闭合为低电平,开关断开为高电平。四个开关的状态为二进制,编码为十六进制后分别在LED中显示为“0”到“F”。主要器件:单片机AT89C51,共阳极数码管7SEG-COM-AN-GRN,开关SW-SPST,8排电阻RESPACK-8( RX8),阻值200欧,单个电阻RES,阻值4.7K欧。硬件电路实现:protues ,软件实现: keil实验 3 外部中断实验二、实验内容在 INT0 和 INT1 上分别接两个可回复式按钮,其中 INT0 上的按钮每按下一次则计数加一,INT1 上的按钮每按下一次则计数减一。P1.0~ P1.3 接 LED 灯,以显示计数信号。P1.0~ P1.3 口也可采用七段数码管显示相应的数字。实验 4 定时器/计数器中断实验二、实验内容1. 用 cpu 内部定时器 T0 中断方式计时,产生周期为 2s,占空比为 80%的脉冲波形,显示在 P1.0 口。2. 用 cpu 内部计数器 T1,按计数模式工作,对 P1.0 口输出的脉冲进行计数,并显示在 P2口。实验 5 定时器中断实验二、实验内容设计一个可预置数的时钟,共有 3 个 LED 分别显示分个位、秒十位、秒个位。要求 P1口显示分钟,P2 口显示秒个位,P0 口显示秒十位,并可通过外部中断按钮分别进行分和秒的校时。