久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1528|回復: 2
打印 上一主題 下一主題
收起左側

C語言小白 有些程序讀不懂 有沒有大佬可以注釋一下 感謝!

[復制鏈接]
跳轉到指定樓層
樓主
ID:761785 發表于 2020-6-1 00:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
#define XBYTE ((unsigned char volatile xdata *) 0)
#define adin XBYTE[0x7fff] //P2=0x7f P0 = 0xff
#define addo (5.0/255.0)
#define zero 0.005

sbit  LED1 = P3^0
sbit  LED2 = P3^1;
sbit  LED3 = P3^2;
sbit  LED4 = P3^3;
sbit  dp   = P3^5;

static unsigned char dispdata[4];

unsigned char code num[] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,  0x7d,0x07,0x7f,0x6f,0x77,0x3e }

void delayus(unsigned int us)
{
        while(us--);
}

unsigned char ad_action(unsigned char chn)
{
        unsigned char read_data;
        adin = chn
        delayus(6);
        read_data = adin;
        return read_data
}     

//êyÖμ′|àí
void decodenum(float adv,unsigned char chn
{
  unsigned int temp;
  temp = (unsigned int)(adv*100);
  dispdata[0] = temp/100;
  dispdata[1] = temp/10%10;
  dispdata[2] = temp%10;
  dispdata[3] = chn;
}

void  dispone(unsigned char LED,bit ifpoint,unsigned char number)   //number 0--9
{     
        switch(LED)
        {
                case 0:LED1 = 0;break;
                case 1:LED2 = 0;break;
                case 2:LED3 = 0;break;
                case 3:LED4 = 0;break;
                default: P3 = 0xff;
        }
        if( ifpoint == 1 ) dp = 1;
        else dp = 0;
        P2 = num[number]|0x80
        delayus(200);
        P3 = 0xff;          
}

void disp()
{
        unsigned char i;
        bit point;
        for(i = 0;i<4;i++)
        {
                if(i == 1) point = 0
                else point = 1;
                dispone(i,point,dispdata[i]);
        }
}

void main()
{
        unsigned int cnt = 0
        while(1)
        {
                switch(cnt++)
                {
                        case 0  : decodenum(ad_action(0)*addo+zero,0);break
                        case 70 : decodenum(ad_action(1)*addo+zero,1);break
                        case 140: decodenum(ad_action(2)*addo+zero,2);break
                        case 210: decodenum(ad_action(3)*addo+zero,3);break
                        case 280: decodenum(ad_action(4)*addo+zero,4);break
                        case 350: decodenum(ad_action(5)*addo+zero,5);break
                        case 420: decodenum(ad_action(6)*addo+zero,6);break
                        case 490: decodenum(ad_action(7)*addo+zero,7);break;
                        case 560: cnt = 0;break;
                }
                disp();
        }
}      

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:744327 發表于 2020-6-1 08:46 | 只看該作者
這是一個顯示程序,顯示宏定義, 后面位聲明,數組定義,延時和顯示函數,最后主函數運行。
回復

使用道具 舉報

板凳
ID:367934 發表于 2020-6-1 09:49 | 只看該作者
分析程序一般從主程序入手即“void main()”,前提需要了解C語言的基礎知識點和函數部分相關知識。就不難分析程序完成的功能。
在主程序的主循環中即while(1){}內可以分成兩個部分,一個是條件選擇語句switch(cnt++){case 0:break;}關于這個的使用可以在網上找到詳細的使用方法。

其中主要有兩個函數在使用分別是void decodenum(float adv,unsigned char chn)和unsigned char ad_action(unsigned char chn)。
void decodenum(float adv,unsigned char chn)//這個函數的功能是把一個浮點數放大一百倍后保存到dispdata[]數組的0-2位,共3位。
dispdata[0]保存的是放大一百倍后的百位,
dispdata[1]保存的是放大一百倍后的十位,
dispdata[2]保存的是放大一百倍后的個位,
ad_action()這個函數的功能是讀取芯片的AD轉換的值。
disp();這個函數是一個LED的流水燈。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产一区探花在线观看 | 亚洲精品中文字幕中文字幕 | 91在线精品一区二区 | 91黄色免费看 | 亚洲综合首页 | 免费av播放 | 婷婷五月色综合香五月 | 成人午夜免费在线视频 | 久久久久久久91 | 国精久久| 成人精品国产一区二区4080 | 色婷婷av777 av免费网站在线 | 欧美激情一区 | 粉嫩国产精品一区二区在线观看 | 欧美视频中文字幕 | 国产精品国产a | 99精品欧美一区二区三区综合在线 | 亚洲中午字幕 | 九九国产在线观看 | 中文日韩在线 | 亚洲精品一区二区三区蜜桃久 | 中文字幕在线视频观看 | 日本国产高清 | 91大神在线资源观看无广告 | 欧美精品一区二区三区蜜桃视频 | 91久久精品日日躁夜夜躁欧美 | 色婷婷国产精品综合在线观看 | 一区二区三区在线观看视频 | 国产一区二区三区在线视频 | 精品国产一区二区三区四区在线 | 久久久久国产一区二区三区 | 久久毛片网站 | 欧美性猛交一区二区三区精品 | 久久久免费少妇高潮毛片 | 羞羞视频在线观看 | 日本精品一区二区三区在线观看视频 | 91在线第一页 | 久久久久久九九九九九九 | 九九亚洲 | 中文字幕11页 | 亚洲三级免费看 |