登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 指针示例

[复制链接]
发表于 2022-1-23 16:44:44 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-01-23
结束时间: 2022-01-23
指针示例程序1#include<reg52.h>

sbit ENLED=P1^1;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
void shiftleft(unsigned char *p);

void main()
{
        unsigned int i=0;
        unsigned char buf=0x01;
        ENLED=0;
        P20=0;
        P21=1;
        P22=1;
       
        while(1)
        {
                P0 = ~buf;
                for(i=0;i<50000;i++);
                shiftleft(&buf);
                if(buf==0)
                {
                        buf=0x01;
                }
        }
};
void shiftleft(unsigned char *p)
{
        *p=*p<<1;
}


指针示例程序2

#include<reg52.h>

bit cmdArrived=0;
unsigned char cmdindex=0;
unsigned char *ptrTxd;
unsigned char cntTxd=0;

unsigned char array1[1]={1};
unsigned char array2[2]={1,2};
unsigned char array3[4]={1,2,3,4};
unsigned char array4[8]={1,2,3,4,5,6,7,8};
void configUART(unsigned int baud);

void main()
{
        EA=1;
        configUART(9600);
        while(1)
        {
                if(cmdArrived)
                {
                        cmdArrived=0;
                        switch(cmdindex)
                        {
                                case 1:
                                        ptrTxd=array1;
                                  cntTxd=sizeof(array1);
                                  TI=1;
                                  break;
                                case 2:
                                        ptrTxd=array2;
                                  cntTxd=sizeof(array2);
                                  TI=1;
                                  break;
                                case 3:
                                        ptrTxd=array3;
                                  cntTxd=sizeof(array3);
                                  TI=1;
                                  break;
                                case 4:
                                        ptrTxd=array4;
                                  cntTxd=sizeof(array4);
                                  TI=1;
                                  break;
                                default:
                                        break;
                        }
                }
        }
}

void configUART(unsigned int baud)
{
        SCON=0x50;
        TMOD&=0x0F;
        TMOD|=0x20;
        TH1=255-(32768000/12/32)/baud;
        TL1=TH1;
        ET1=0;
        TR1=1;
        ES=1;
}

void interruptUART() interrupt 4
{
        if(TI)      //·¢&#203;í
        {
                TI=0;
                if(cntTxd>0)
                {
                        SBUF=*ptrTxd;
                        ptrTxd++;
                        cntTxd--;
                }
        }
        if(RI)      //&#189;óêü
        {
                RI=0;
                cmdindex=SBUF;
                cmdArrived=1;
        }
}


好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表