1.用C51实现片内RAM的30H和31H地址单元中的数据相加,保存到32H单元中。
#include  <absacc.h>
#define        a    DBYTE[0x30]
#define        b    DBYTE[0x31]
#define        c    DBYTE[0x32]
void main( )
{
    c=a+b;
}
2.用C51语言实现给片内RAM的30H地址单元赋值为CDH(内存赋值)。
#include  <absacc.h>
#define        a    DBYTE[0x30]
void main( )
{
    a=0xCD;
}
3.编写程序,将单片机片外2000H为首地址的连续10个单元的内容,读入到片内RAM的40H~49H单元中。
#include  <absacc.h>.
void main( )
{
    unsigned char i;
        for(i=0;1<10;i++)
            {
                XBYTE[0x2000+i]=i;
                DBYTE[0x40+i]=XBYTE[0x2000+i];
}
}
4.有符号数比较大小
    假设在片内RAM的30H单元中,储存的有符号数据是m,在片内RAM的30H中存储的有符号数是n,比较这两个数的大小,并将较大的数保存在片内RAM的30H单元中,较小的数保存在片内RAM的31H单元中。
#incliude    <absacc.h>
#define        m    DBYTE[0x30]
#define        n    DBYTE[0x31]
#define        a    DBYTE[0x32]
void main( )
{
    m=-6;n=-5;
        if(m<n)
            {
                a=m;m=n;n=a;
}
5.比较大小
    将片内RAM的30H~39H单元中的数据分别赋值成0~9,然后对其进行比较,将最大值存入片内3AH的单元中。
#include  <absacc.h>
void main( )
{
    unsigned char i;
        for(i=0;i<10;i++)
            DBYTE[0x30+i]=i;
                DBYTE[0x3a]= DBYTE[0x30];
                    for(i=0;i<10;i++)
                        if(DBYTE[0x3a]<DBYTE[0x30+i])
                            DBYTE[0x3a]=DBYTE[0x30+i];
}
6.ASCII码16进制数
    若一个十六进制数的ASCII码,存于片内RAM的30H单元,请把该ASCII码对应十六进制数,存于片内RAM的31H单元中。
#include    <absacc.h>
#define        X    DBYTE[0x30]
#define        Y    DBYTE[0x31]
void main( )
{
    while(1)
        {
            if(x<=0x39)
            {Y=X-0x30;}
            else
            {Y=X-0x37;}
}
}
7.P1输出口,外接8只发光二极管,设计电路图并用C51语言编程,循环点亮
#include <reg51.h>
void main()
{
    unsigned char I,LED;
    while(1)
        {
            LED=0xfe;
                for(i=0;i<8;i++)
                    {P1=LED;
LED<<=1;
delay( );}
}
}
void delay( )
{
    unsigned int j;
    for(j=0;j<12500;j++);
}
低到高点亮
#include <reg51.h>
void main()
{
    unsigned char I,LED;
    while(1)
        {
            LED=0x7f;
                for(i=0;i<8;i++)
                    {P1=LED;
LED>>=1;
LED=LED+0x80;
delay( );}
}
}
void delay( )
单片机编程100例详解{
    unsigned int j;
    for(j=0;j<12500;j++);
}
8.开关检测
#include <reg51.h>
void main()
{
    char state;
    do
    {
        P1=0xff;
        state=P1;
        state= state&0x03;
        switch(state)
        {
            case 0:P2=0x01;break;
            case 1:P2=0x02;break;
            case 2:P2=0x04;break;
            case 3:P2=0x08;break;
        }
    }while(1);           
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。