wic語言編程,c語言編程技術

本文目錄一覽:

C語言編程的while語句問題~

你怎麼判斷它只執行了一次呢???

補充:首先不清楚你的晶元具體是什麼型號的,從程序上看應該是PIC16或者pic18系列的。也不清楚晶振頻率是多少。

我提出我的懷疑及其推論:首先我懷疑while不是沒有循環,而是一直循環了,但是Vsrb_average[0]並沒有被賦值超過50以上的數值。(你可以加一條語句,在wihile大括弧里,但不在任何if語句內的:loop++;讓一個自定義變數自加,運行一兩秒後看loop的數數值肯定很大)

因此懷疑AD採集過程並不準確。而為什麼AD採集不準確呢,一般設置好並開啟AD後採樣和保持需要時間的(PIC單片機的數據手冊里也提到)但你的程序設置是T0定時溢出後在中斷里執行AD採集。這時候問題來了,你的TO的option_org寄存器等於0B11001111,也就是說設置T0定時器使用內部指令周期時鐘(就是用單片機晶振所輸入的頻率定時)但PSA=0,預分頻器不用於T0,所以當你的晶振是4M的時候,定時器0從計數到溢出只需要256uS。也就是說程序從WHILE開始到採集AD信號這段時間才比256us大不了多少,這根本不符合PIC單片機規定的採集時間。所以採集到的數據很小,根本不足進入while循環內部的哪兩個if語句(一個IF語句是判斷[50,600]這個區間,另一個是判斷大於680這個範圍)。

但當你屏蔽掉T0的初始化程序後,注意,這時候0PTION_REG寄存器等於0B11111111,如果TRCKI這個引腳是有脈衝充輸入的話,T0定時器是會自動計數的,當溢出之後是會自動置位T0IF的(雖然沒有設置T0IE,但T0IF滿足條件後是會置位的),而你的總中斷開關在主函數里INTCON|=0XC0;所以當T1定時器溢出之後,程序會在中斷子函數里進行對T0的操作。

還有你的程序有些邏輯錯誤,AD結果應該是10位的,但你接收AD結果的數組a[2]卻是8位的,那就丟失了兩個位了。

如果還有問題,給我留言。

C語言編程,要求有反代碼,功能不限,20行以上,求高手幫忙啊

#include “stdafx.h”

#include stdio.h //身份證號碼升級

int main()

{

int i,wi=0;

char sh[19],a[4];

int w[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};

char y[12]={“10×98765432”};

printf(“請輸入15位身份證號碼:”);

scanf(“%s”,sh);

printf(“\n”);

for(i=15;i=6;i–)

sh[i+2]=sh[i];

sh[6]=’1′;sh[7]=’9′;

printf(“\n”);

for(i=0;i17;i++)

wi+=(sh[i]-‘0’)*w[i];

sh[17]=y[wi%11];

sh[18]=’\0′;

printf(“18位身份證號碼是:%s\n”,sh);

}

彙編:

int main()

{

000B6C26 inc ebp

000B6C27 cld

int i, wi = 0;

000B6C28 mov dword ptr [wi],0

char sh[19];

int w[17] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };

000B6C2F mov dword ptr [w],7

000B6C36 mov dword ptr [ebp-7Ch],9

000B6C3D mov dword ptr [ebp-78h],0Ah

000B6C44 mov dword ptr [ebp-74h],5

000B6C4B mov dword ptr [ebp-70h],8

000B6C52 mov dword ptr [ebp-6Ch],4

000B6C59 mov dword ptr [ebp-68h],2

000B6C60 mov dword ptr [ebp-64h],1

000B6C67 mov dword ptr [ebp-60h],6

000B6C6E ?? ??

000B6C6F ?? ??

000B6C70 ?? ??

000B6C71 ?? ??

000B6C72 add byte ptr [eax],al

000B6C74 add bh,al

000B6C76 inc ebp

000B6C77 test al,7

000B6C79 add byte ptr [eax],al

000B6C7B add bh,al

000B6C7D inc ebp

000B6C7E lods byte ptr [esi]

char sh[19];

int w[17] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };

000B6C7F or dword ptr [eax],eax

000B6C81 add byte ptr [eax],al

000B6C83 mov dword ptr [ebp-50h],0Ah

000B6C8A mov dword ptr [ebp-4Ch],5

000B6C91 mov dword ptr [ebp-48h],8

000B6C98 mov dword ptr [ebp-44h],4

000B6C9F mov dword ptr [ebp-40h],2

char y[12] = { “10×98765432” };

000B6CA6 mov eax,dword ptr ds:[000BED84h]

000B6CAB mov dword ptr [y],eax

000B6CB1 mov ecx,dword ptr ds:[0BED88h]

000B6CB7 mov dword ptr [ebp-90h],ecx

000B6CBD mov edx,dword ptr ds:[0BED8Ch]

char y[12] = { “10×98765432” };

000B6CC3 mov dword ptr [ebp-8Ch],edx

cout”請輸入15位身份證號碼:”;

000B6CC9 push 0BED94h

000B6CCE mov eax,dword ptr ds:[000C20C0h]

000B6CD3 push eax

000B6CD4 call std::operatorstd::char_traitschar (0B1302h)

000B6CD9 add esp,8

cin sh;

000B6CDC lea eax,[sh]

000B6CDF push eax

000B6CE0 mov ecx,dword ptr ds:[0C20BCh]

000B6CE6 push ecx

000B6CE7 call std::operatorchar,std::char_traitschar (0B10E1h)

000B6CEC add esp,8

for (i = 15; i = 6; i–)

000B6CEF mov dword ptr [i],0Fh

000B6CF6 jmp main+101h (0B6D01h)

000B6CF8 mov eax,dword ptr [i]

000B6CFB sub eax,1

000B6CFE mov dword ptr [i],eax

000B6D01 cmp dword ptr [i],6

000B6D05 jl main+117h (0B6D17h)

sh[i + 2] = sh[i];

000B6D07 mov eax,dword ptr [i]

000B6D0A mov ecx,dword ptr [i]

000B6D0D mov dl,byte ptr sh[ecx]

000B6D11 mov byte ptr [ebp+eax-32h],dl

000B6D15 jmp main+0F8h (0B6CF8h)

sh[6] = ‘1’; sh[7] = ‘9’;

000B6D17 mov eax,1

000B6D1C imul ecx,eax,6

000B6D1F mov byte ptr sh[ecx],31h

000B6D24 mov eax,1

000B6D29 imul ecx,eax,7

000B6D2C mov byte ptr sh[ecx],39h

printf(“\n”);

000B6D31 mov esi,esp

000B6D33 push 0BEDB0h

000B6D38 call dword ptr ds:[0C2220h]

000B6D3E add esp,4

000B6D41 cmp esi,esp

000B6D43 call __RTC_CheckEsp (0B1398h)

for (i = 0; i17; i++)

000B6D48 mov dword ptr [i],0

000B6D4F jmp main+15Ah (0B6D5Ah)

000B6D51 mov eax,dword ptr [i]

000B6D54 add eax,1

000B6D57 mov dword ptr [i],eax

000B6D5A cmp dword ptr [i],11h

000B6D5E jge main+17Bh (0B6D7Bh)

wi += (sh[i] – ‘0’)*w[i];

000B6D60 mov eax,dword ptr [i]

000B6D63 movsx ecx,byte ptr sh[eax]

000B6D68 sub ecx,30h

000B6D6B mov edx,dword ptr [i]

000B6D6E imul ecx,dword ptr w[edx*4]

000B6D73 add ecx,dword ptr [wi]

000B6D76 mov dword ptr [wi],ecx

000B6D79 jmp main+151h (0B6D51h)

sh[17] = y[wi % 11];

000B6D7B mov eax,dword ptr [wi]

000B6D7E cdq

000B6D7F mov ecx,0Bh

000B6D84 idiv eax,ecx

000B6D86 mov eax,1

000B6D8B imul ecx,eax,11h

000B6D8E mov dl,byte ptr y[edx]

000B6D95 mov byte ptr sh[ecx],dl

sh[18] = ‘\0’;

000B6D99 mov eax,1

sh[18] = ‘\0’;

000B6D9E imul ecx,eax,12h

000B6DA1 mov dword ptr [ebp-160h],ecx

000B6DA7 cmp dword ptr [ebp-160h],13h

000B6DAE jae main+1B2h (0B6DB2h)

000B6DB0 jmp main+1B7h (0B6DB7h)

000B6DB2 call ___report_rangecheckfailure (0B1415h)

000B6DB7 mov edx,dword ptr [ebp-160h]

000B6DBD mov byte ptr sh[edx],0

cout “18位身份證號碼是:” sh “\n”;

000B6DC2 push 0BEDB0h

000B6DC7 lea eax,[sh]

000B6DCA push eax

000B6DCB push 0BEDB4h

000B6DD0 mov ecx,dword ptr ds:[0C20C0h]

000B6DD6 push ecx

000B6DD7 call std::operatorstd::char_traitschar (0B1302h)

000B6DDC add esp,8

000B6DDF push eax

000B6DE0 call std::operatorstd::char_traitschar (0B1302h)

000B6DE5 add esp,8

000B6DE8 push eax

000B6DE9 call std::operatorstd::char_traitschar (0B1302h)

000B6DEE add esp,8

}

000B6DF1 jmp main+1F5h (0B6DF5h)

000B6DF3 jmp main+1F7h (0B6DF7h)

000B6DF5 xor eax,eax

000B6DF7 push edx

000B6DF8 mov ecx,ebp

000B6DFA push eax

000B6DFB lea edx,ds:[0B6E28h]

000B6E01 call @_RTC_CheckStackVars@8 (0B1159h)

000B6E06 pop eax

000B6E07 pop edx

000B6E08 pop edi

000B6E09 pop esi

000B6E0A pop ebx

000B6E0B mov ecx,dword ptr [ebp-4]

000B6E0E xor ecx,ebp

000B6E10 call @__security_check_cookie@4 (0B1050h)

000B6E15 add esp,164h

000B6E1B cmp ebp,esp

000B6E1D call __RTC_CheckEsp (0B1398h)

000B6E22 mov esp,ebp

000B6E24 pop ebp

000B6E25 ret

000B6E26 mov edi,edi

000B6E28 add eax,dword ptr [eax]

000B6E2A add byte ptr [eax],al

000B6E2C xor byte ptr [esi+0Bh],ch

000B6E2F add ah,cl

000B6E31 ?? ??

000B6E32 ?? ??

000B6E33 call dword ptr [ebx]

000B6E35 add byte ptr [eax],al

000B6E37 add byte ptr [eax+6Eh],bl

000B6E3A or eax,dword ptr [eax]

000B6E3C cmp bh,0FFh

000B6E3F inc dword ptr [eax+eax]

000B6E43 add byte ptr [esi+6Eh],dl

000B6E46 or eax,dword ptr [eax]

000B6E48 ins byte ptr es:[edi],dx

000B6E49 ?? ??

000B6E4A ?? ??

000B6E4B dec dword ptr [eax+eax]

000B6E4E add byte ptr [eax],al

000B6E50 push esp

000B6E51 outs dx,byte ptr [esi]

000B6E52 or eax,dword ptr [eax]

000B6E54 jns main+256h (0B6E56h)

000B6E56 ja main+258h (0B6E58h)

000B6E58 jae _main+2C2h (0B6EC2h)

000B6E5A add ah,cl

c語言編寫一個程序,在電腦上讀取單片機用Wi-Fi返回的數值怎麼做

這個涉及的就比較多了。通常單片機通過串口和WIFI模塊通信,難點是網路通信部分。首先要確定服務端和客戶端。

如果電腦做服務端就要寫個程序監聽一個埠(也有現成的網路調試助手),然後配置WIFI模塊鏈接電腦IP的那個埠,就建立通信了。之後模塊要定期發送心跳包,防止鏈路斷開電腦無法主動請求單片機的數據。這種情況是單片機主動發數據,當然鏈路建立之後電腦也可以主動讀。

如果電腦做客戶端,就要先配置WIFI為服務端(前提是你的模塊有這個功能),然後電腦連接WIFI的IP地址就能訪問。這種情況是電腦主動讀。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236154.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 11:58
下一篇 2024-12-12 11:58

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論