wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

一個從定時計數器賦初值引起的故事【原創】

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年10月19日   【字體:

  最近單片機課講到了定時計數器,在C語言中定時計數器的初值可以采用這種方式(假設計數10000次)TH0=(65536-10000)/256;TL0=(65536-10000)%256;這是通用的方法,65536-10000=55536=0xD8F0;賦值后TH0=0xD8,TL0=0xF0。我聯想到補碼的規則,65536-10000的數值在計算機中和-10000數據存儲是一樣的,于是我就簡單賦值為TH0=(-10000)/256.;TL0=(-10000)%256;可以少寫一個數據,減少敲字的工作。我就這樣給學生講了。這兩種方法都可以。

   在一天李老師看到我的學生作業都是寫TH0=(-10000)/256.;TL0=(-10000)%256;她說-10000可能使用不對。當天晚上的時候在QQ上發消息過來說,經驗證,在Keil中,TH0=(65536-10000)/256;TL0=(65536-10000)%256;的賦值方式TH0=0xD8,TL0=0xF0。但是TH0=(-10000)/256.;TL0=(-10000)%256;的賦值方式TH0=0xD9,TL0=0xF0。TH0的數值總是要大1,而且取不同的數值驗證均是這個結果,兩種方式TH0總是相差1,而TL0數值是一樣的。我打開Keil,輸入程序,然后調試查看匯編指令,得到如下結果:

     8: TH0=(65536-10000)/256;
C:0x009B    758CD8   MOV      TH0(0x8C),#0xD8
     9:   TH1=(-10000)/256;
C:0x009E    758DD9   MOV      TH1(0x8D),#0xD9

發現匯編指令直接對于TH0和TH1進行賦值,沒有經過任何的運算,但是就是相差1,這是為什么呢?我無法理解,后來在百度知道上提問,得到的回答是:這個和默認數據類型有關,TH0=(65536-10000)/256,默認unsigned char,即TH0=0xD8;TH0=(-10000)/256,默認signed char,二進制最高位為符號位,負數為1,所以TH0=0xD9 。

原來是Keil編譯器計算數據的時候默認的數據類型不一樣,65536-10000=55536是unsigned類型,55536/256=216=0xD8,而-10000是signed類型,(-10000)/256=-39=0xD9。原來如此,Keil的編譯器預先處理的時候根據不同類型的數據進行了不同的運算,然后直接賦值。我又驗證了一下,TH0=(unsigned int)(-10000)/256;發現先把-10000強制轉換為unsigned類型后,得到的結果就是正確的了TH0=0xD8。得到答案后臉紅了,不過多虧是在放假期間,沒有學生看到。開學后立即在課堂上更正了。╮(╯▽╰)╭,這次糗大了。

    我重新寫了一個程序,#include<reg51.h>
void main()
{
unsigned int  i;
 unsigned char j;
 i= - 10000;
 j=i/256;

while(1)
 ;
}

中間加一個變量,看Keil會怎么處理,結果發現

     2: void main()
     3: { 
     4: unsigned int  i;
     5:  unsigned char j;
     6:  i=-10000;
C:0x000F    7ED8     MOV      R6,#0xD8
     7:  j=i/256;
     8: 
C:0x0011    8E08     MOV      0x08,R6
     9: while(1)
C:0x0013    80FE     SJMP     C:0013

還是直接賦值,編譯器太聰明了,知道80C51對于數據運算非常非常的不擅長,于是直接處理完數據,然后用賦值的方式來寫匯編的指令。而且還知道,i的低字節沒有用到,在指令里根本沒有出現,這也太聰明了吧。Keil軟件是最流行,最好用的編譯器,不是浪得虛名的。

我再修改:

include<reg51.h>
void main()
{
unsigned int  i;
 unsigned char j;
 i=-10000;
 i++;
 j=i/256;

while(1)
 ;
}

結果發現代碼只增加了一點。

         2: void main()
     3: { 
     4: unsigned int  i;
     5:  unsigned char j;
     6:  i=-10000;
C:0x0003    7FF0     MOV      R7,#B(0xF0)
C:0x0005    7ED8     MOV      R6,#0xD8
     7:  i++;
C:0x0007    0F       INC      R7
C:0x0008    BF0001   CJNE     R7,#0x00,C:000C
C:0x000B    0E       INC      R6
     8:  j=i/256;
     9: 
C:0x000C    8E08     MOV      0x08,R6
    10: while(1)
C:0x000E    80FE     SJMP     C:000E

但對于j的運算還是用賦值的方式。我再改,把i類型變成signed類型,結果大吃一驚:

include<reg51.h>
void main()
{
    int  i;
 unsigned char j;
 i=-10000;
 
 j=i/256;

while(1)
 ;
}

程序變得非常龐大,代碼從28B猛增到169B:

C:0x0000    02009D   LJMP     C:009D
                 C?SIDIV:
C:0x0003    C2D5     CLR      F0(0xD0.5)
C:0x0005    EC       MOV      A,R4
C:0x0006    30E709   JNB      0xE0.7,C:0012
C:0x0009    B2D5     CPL      F0(0xD0.5)
C:0x000B    E4       CLR      A
C:0x000C    C3       CLR      C
C:0x000D    9D       SUBB     A,R5
C:0x000E    FD       MOV      R5,A
C:0x000F    E4       CLR      A
C:0x0010    9C       SUBB     A,R4
C:0x0011    FC       MOV      R4,A
C:0x0012    EE       MOV      A,R6
C:0x0013    30E715   JNB      0xE0.7,C:002B
C:0x0016    B2D5     CPL      F0(0xD0.5)
C:0x0018    E4       CLR      A
C:0x0019    C3       CLR      C
C:0x001A    9F       SUBB     A,R7
C:0x001B    FF       MOV      R7,A
C:0x001C    E4       CLR      A
C:0x001D    9E       SUBB     A,R6
C:0x001E    FE       MOV      R6,A
C:0x001F    120039   LCALL    C?UIDIV(C:0039)
C:0x0022    C3       CLR      C
C:0x0023    E4       CLR      A
C:0x0024    9D       SUBB     A,R5
C:0x0025    FD       MOV      R5,A
C:0x0026    E4       CLR      A
C:0x0027    9C       SUBB     A,R4
C:0x0028    FC       MOV      R4,A
C:0x0029    8003     SJMP     C:002E
C:0x002B    120039   LCALL    C?UIDIV(C:0039)
C:0x002E    30D507   JNB      F0(0xD0.5),C:0038
C:0x0031    C3       CLR      C
C:0x0032    E4       CLR      A
C:0x0033    9F       SUBB     A,R7
C:0x0034    FF       MOV      R7,A
C:0x0035    E4       CLR      A
C:0x0036    9E       SUBB     A,R6
C:0x0037    FE       MOV      R6,A
C:0x0038    22       RET      
                 C?UIDIV:
C:0x0039    BC000B   CJNE     R4,#0x00,C:0047
C:0x003C    BE0029   CJNE     R6,#0x00,C:0068
C:0x003F    EF       MOV      A,R7
C:0x0040    8DF0     MOV      B(0xF0),R5
C:0x0042    84       DIV      AB
C:0x0043    FF       MOV      R7,A
C:0x0044    ADF0     MOV      R5,B(0xF0)
C:0x0046    22       RET      
C:0x0047    E4       CLR      A
C:0x0048    CC       XCH      A,R4
C:0x0049    F8       MOV      R0,A
C:0x004A    75F008   MOV      B(0xF0),#0x08
C:0x004D    EF       MOV      A,R7
C:0x004E    2F       ADD      A,R7
C:0x004F    FF       MOV      R7,A
C:0x0050    EE       MOV      A,R6
C:0x0051    33       RLC      A
C:0x0052    FE       MOV      R6,A
C:0x0053    EC       MOV      A,R4
C:0x0054    33       RLC      A
C:0x0055    FC       MOV      R4,A
C:0x0056    EE       MOV      A,R6
C:0x0057    9D       SUBB     A,R5
C:0x0058    EC       MOV      A,R4
C:0x0059    98       SUBB     A,R0
C:0x005A    4005     JC       C:0061
C:0x005C    FC       MOV      R4,A
C:0x005D    EE       MOV      A,R6
C:0x005E    9D       SUBB     A,R5
C:0x005F    FE       MOV      R6,A
C:0x0060    0F       INC      R7
C:0x0061    D5F0E9   DJNZ     B(0xF0),C:004D
C:0x0064    E4       CLR      A
C:0x0065    CE       XCH      A,R6
C:0x0066    FD       MOV      R5,A
C:0x0067    22       RET      
C:0x0068    ED       MOV      A,R5
C:0x0069    F8       MOV      R0,A
C:0x006A    F5F0     MOV      B(0xF0),A
C:0x006C    EE       MOV      A,R6
C:0x006D    84       DIV      AB
C:0x006E    20D21C   JB       OV(0xD0.2),C:008D
C:0x0071    FE       MOV      R6,A
C:0x0072    ADF0     MOV      R5,B(0xF0)
C:0x0074    75F008   MOV      B(0xF0),#0x08
C:0x0077    EF       MOV      A,R7
C:0x0078    2F       ADD      A,R7
C:0x0079    FF       MOV      R7,A
C:0x007A    ED       MOV      A,R5
C:0x007B    33       RLC      A
C:0x007C    FD       MOV      R5,A
C:0x007D    4007     JC       C:0086
C:0x007F    98       SUBB     A,R0
C:0x0080    5006     JNC      C:0088
C:0x0082    D5F0F2   DJNZ     B(0xF0),C:0077
C:0x0085    22       RET      
C:0x0086    C3       CLR      C
C:0x0087    98       SUBB     A,R0
C:0x0088    FD       MOV      R5,A
C:0x0089    0F       INC      R7
C:0x008A    D5F0EA   DJNZ     B(0xF0),C:0077
C:0x008D    22       RET      

     2: void main()
     3: { 
     4:     int  i;
     5:  unsigned char j;
     6:  i=-10000;
     7:  
C:0x008E    7FF0     MOV      R7,#B(0xF0)
C:0x0090    7ED8     MOV      R6,#0xD8
     8:  j=i/256;
     9: 
C:0x0092    7C01     MOV      R4,#0x01
C:0x0094    7D00     MOV      R5,#0x00
C:0x0096    120003   LCALL    C?SIDIV(C:0003)
C:0x0099    8F08     MOV      0x08,R7
    10: while(1)
C:0x009B    80FE     SJMP     C:009B

就是一個signed和unsigned的區別,用的著差別這么大嗎?

通過以上的實驗,可以得出結論:Keil編譯器非常智能,會生成最短的代碼,能夠智能判斷每個變量的使用,生成最短的代碼。同時,學習單片機的各位同仁,除非萬不得已,千萬不要用signed類型。

關閉窗口

相關文章

av一区二区不卡| 欧美孕妇性xx| 国产日韩视频一区二区三区| 色欧美自拍视频| 丁香花在线电影| 18岁以下禁止观看的美女视频| 青娱乐在线免费视频| 亚洲少妇一区二区三区| 中国黄色录像片| 国产日本欧美一区二区三区| 亚洲天堂久久av| 色综合天天综合网国产成人综合天 | 欧美爱爱视频网站| 国产精品视频一| 视频在线一区二区| 欧美日韩一区二区在线观看| 91视频免费播放| 久久婷婷影院| 66国产精品| 国产精品qvod| 激情都市亚洲| 尤物在线视频| 美女胸又www又黄的网站| 鲁啊鲁视频在线精品| 国产suv一区二区| 日韩三级av在线| 91精品国自产在线| 成人免费播放视频| 在线不卡视频一区二区| 国产高清精品一区二区三区| 久久久久久91| 日韩国产激情在线| 欧美日韩卡一卡二| 亚洲激情在线激情| 久久嫩草精品久久久久| 九九**精品视频免费播放| 女人丝袜激情亚洲| 亚洲一区二区免费在线观看| av福利导福航大全在线| 蜜桃视频在线播放| 久久综合色播| 国产精品自拍在线观看| 亚洲国产精品国自产拍久久| 久久久久久久久久成人| 欧美日韩国产黄色| 亚洲男人在线天堂| 另类小说第一页| 亚洲美免无码中文字幕在线| 亚洲欧洲另类精品久久综合| 国产精品白丝jk白祙| 欧洲亚洲女同hd| 欧美丰满少妇xxxx| 色妞一区二区三区| 亚洲成人黄色在线| 欧美日韩在线不卡| 香蕉久久一区二区不卡无毒影院| 久久久午夜精品理论片中文字幕| 激情小说亚洲一区| 久久资源在线| 欧美福利网址| 久久影视一区| 一本一道dvd在线观看免费视频| 国产中文字幕第一页| 激情美女网站| 欧美性猛交xxxxbbb| 亚洲欧美日韩精品永久在线| 国产成人三级在线播放 | 香蕉视频在线观看免费| 黄色成人羞羞视频| av免费在线播放| eeuss鲁丝片eeuss影院| 污污美女网站| 一个人在线视频免费观看www| 一二三四视频在线社区中文字幕2| 亚洲精品字幕在线| 日本黄色免费视频| 日产欧产va高清| 黄色一级视频免费| 欧美婷婷精品激情| 日韩在线第一区| 欧美精品v日韩精品v国产精品| 成人亚洲综合色就1024| 成人精品视频在线| 日本人成精品视频在线| 欧美最近摘花xxxx摘花| 国产精品99久久久久久久久 | 欧美久草视频| 9.1片黄在线观看| √天堂中文官网8在线| 精品无码久久久久成人漫画| 国产三级aaa| 国产天堂av在线| 久久久久久久国产精品毛片| 久草视频免费在线播放| av资源吧首页| 国产又黄又猛又粗又爽| 性无码专区无码| 91超薄丝袜肉丝一区二区| 中文字幕av久久爽| 国产成人免费看一级大黄| 无码国产精品高潮久久99| 欧美 日韩 国产 精品| 国产一级做a爱免费视频| 国产成人无码一区二区三区在线| 成人小视频在线播放| 亚洲专区第一页| 人人妻人人玩人人澡人人爽| 色综合久久五月天| 精品一区二区三区在线成人| 乱子伦在线视频| 成人黄动漫网站| 九九九伊在人线综合| 免费不卡av| 视频欧美精品| 精品日产免费二区日产免费二区| 精品动漫一区| 国产河南妇女毛片精品久久久| 国产精品无遮挡| 一本色道久久综合狠狠躁的推荐| 精品欧美一区二区在线观看| 久久精品色欧美aⅴ一区二区| 国产精品pans私拍| 欧美中日韩一区二区三区| 婷婷五月综合缴情在线视频| 男生和女生一起差差差视频| 欧美1o一11sex性hdhd| 亚洲日本理论电影| 欧美日韩亚洲自拍| 337人体粉嫩噜噜噜| 波多野结衣理论片| 精品一区二区三区免费爱| 石原莉奈一区二区三区高清在线| 成人免费看片| 欧美一区在线观看视频| 在线中文一区| 日本美女一区二区| 伊人久久久大香线蕉综合直播| 日韩电影在线免费观看| 日本一区二区三区四区| 欧美日韩国产一二三| 久久成人综合视频| 国产一区高清视频| 天天影视综合色| 永久免费看mv网站入口| 精品国产亚洲AV| a级黄色毛片| 自由的xxxx在线视频| 88久久精品| 老**午夜毛片一区二区三区| 国产精品久久99| 精品国内二区三区| 国产精品成人免费电影| 夜夜爽www精品| 中文字幕天堂av| 人人爽人人爽人人片av| 国产99在线|亚洲| 欧美96在线| 九九精品在线| 欧美精品高清| 99欧美视频| 久久久精品国产99久久精品芒果| 欧美精品乱码久久久久久按摩| 久久免费精品视频| 综合久久国产| 国产色视频一区二区三区qq号| 亚洲无码久久久久| www.男人的天堂| 91福利精品在线观看| 黄色日韩在线| 一区二区三区日韩精品| 丝袜亚洲另类欧美重口| 欧美极品色图| 亚洲国产无码精品| 国产超碰人人爽人人做人人爱| 91抖音在线观看| а√在线中文网新版地址在线| 99精品视频在线| 国产精品色哟哟网站| 亚洲情综合五月天| 欧美日韩国产高清视频| 国产成人无码一区二区在线观看| 日韩av播放器| 亚洲欧美日韩国产一区| 亚洲一| 777.av| 国产综合色在线观看| 好看不卡的中文字幕| 国产精品不卡视频| 亚洲男人天堂2024| 欧美日本高清一区| 乱子伦一区二区| 中日韩一级黄色片| 777琪琪电影午夜理伦片| yw在线观看| 欧美热在线视频精品999| av在线播放成人| 亚洲国产一区二区三区在线观看| caoporn国产精品免费公开| 亚洲一二三av| 国产精品久久久久久久免费看| 成年人免费视频观看| 久久视频社区| 99久久久免费精品国产一区二区| 亚洲第一视频在线观看| 国产一区自拍视频| xxxx日本免费| 国内精品区一区二区三| 国产老肥熟xxxx在线观看| 国产女主播在线直播| 日韩在线理论| 一区二区三区欧美| 国产激情久久久久| 日本人妻一区二区三区| 亚洲一区免费在线| 国产资源在线观看入口av| 日韩精品一卡二卡三卡四卡无卡| 欧美精品一二三| 国产一区福利视频| 亚洲一级二级片| 成人免费视频77777| 99香蕉久久| 自拍偷拍亚洲综合| 国产成人精品在线观看| 国产免费a级片| 欧美粗暴性video| 97精品国产99久久久久久免费| 国产成人一区在线| 在线视频日本亚洲性| 拔插拔插海外华人免费| 中文字幕在线播放不卡| 99免在线观看免费视频高清| 在线观看一区视频| 天天久久综合| 色吊一区二区三区| 欧美日本国产精品| 中文字幕亚洲精品在线| 色综合成人av| 亚洲免费黄色| 亚洲精品美女在线观看| 菠萝蜜视频在线观看入口| 亚洲无码精品国产| 日本高清成人vr专区| 紧缚捆绑精品一区二区| 尤物yw午夜国产精品视频明星| 91视频 -- 69xx| 日韩成人黄色片| 91欧美精品| 亚洲欧美日韩在线| 91最新国产视频| 国产精品九九九九九九| 亚洲啪啪aⅴ一区二区三区9色| 亚洲高清久久| 亚洲乱码一区av黑人高潮| 日日摸日日碰夜夜爽av| 久热久热免费视频中文字幕777| 色综合.com| 亚洲一区在线看| 久久草.com| 糖心vlog精品一区二区| 国产亚av手机在线观看| eeuss国产一区二区三区| 性色av香蕉一区二区| 国产成人av一区二区三区不卡| 97涩在线观看视频| 亚洲美女啪啪| 中文字幕一区电影| 午夜性福利视频| 成人影院一区二区三区| 国产一区激情| 尤物99国产成人精品视频| 超级砰砰砰97免费观看最新一期| 免费的色视频| 欧美一区在线看| 亚洲三级免费看| 中文字幕无码毛片免费看| 天天色天天爽| 亚洲免费精品| 欧美成人激情视频免费观看| 色天使在线视频| 在线国产中文字幕| 在线观看视频免费一区二区三区| 亚洲人成啪啪网站| 欧美1—12sexvideos| 美女福利视频网| 九九久久国产精品| 午夜精品剧场| 久久电影视频| 国产区精品区| 欧美成人乱码一区二区三区| 亚洲最大色综合成人av| 午夜影院在线视频| 综合中文字幕| 欧美日韩精品欧美日韩精品一| 人人妻人人澡人人爽欧美一区双| 欧美最猛性xxxxx喷水| 成人动漫免费在线观看| 亚洲激情在线观看视频免费| 欧美一级特黄aaa| 一级黄色免费| 免费a视频在线观看| 激情aⅴ欧美一区二区欲海潮| 国产精品美女久久久久av爽李琼| 久精品国产欧美| 亚洲成人一二三区| 免费观看成人www动漫视频| 综合色一区二区| 亚洲日本欧美日韩高观看| www国产黄色| 婷婷在线免费观看| 日韩欧美中字| 久久精品夜夜夜夜夜久久| 日韩一区二区三区四区视频| 91麻豆国产福利在线观看宅福利| 1024成人网| 狠狠干视频网站| 黄色大片在线观看| 麻豆国产一区二区| 亚洲永久在线观看| 高清毛片aaaaaaaaa片| japanese国产精品| 久久久精品中文字幕| 国产精品成人av久久| jvid一区二区三区| 精品久久国产字幕高潮| 亚洲人成人无码网www国产| 免费av在线网址| 亚洲成a人在线观看| av片中文字幕| 亚洲热app| 中文字幕亚洲电影| 女人和拘做爰正片视频| 嫩草懂你的影院| 日本一区二区免费在线| 美女av免费观看| 国产成人午夜精品| 2022国产精品视频| 伊人网在线免费| av一级在线| 日本一区二区在线不卡| 男人添女人荫蒂免费视频| 导航艳情国产电影| 国产偷v国产偷v亚洲高清| aaa免费在线观看| 黄页免费观看| 国产欧美一区在线| 丰满少妇久久久| 水莓100在线视频| 夜夜操天天操亚洲| 欧美激情第3页| 岛国成人毛片| 91精品国产91热久久久做人人| 干b视频在线观看| 日韩成人在线电影| 中文字幕久精品免费视频| 日韩av大片在线观看| 亚洲综合福利| 国产成人精品免费久久久久| 四虎在线视频免费观看| 中文高清一区| 精品在线视频一区二区| 岛国爱情动作片在线| 久久综合九色综合欧美98| 国产69精品久久久久久久| 神马亚洲视频| 日本成人中文字幕在线视频| 国产欧美日韩亚洲| 日本免费网站| 久久精品人人做| 色婷婷一区二区三区av免费看| 日韩精品卡一| 日韩av影视在线| 国产精品第六页| 亚洲一级二级| 久久精品ww人人做人人爽| h片在线观看免费| 亚洲欧洲精品一区二区三区不卡| 性欧美在线视频| 成人亚洲欧美| 精品国产一区久久久| 国产精品毛片一区二区在线看舒淇| 国产精品chinese| 女女同性女同一区二区三区91| av在线天天| 日韩欧美国产黄色| 中文字幕91视频| 成人3d精品动漫精品一二三| 91精品视频大全| av先锋影院| 成人小视频在线| wwwwwxxxx日本| 日本精品在线一区| 欧美高清自拍一区| 亚洲精品自产拍在线观看app| www.久久精品| 五月天六月丁香| 精品一级视频| 亚洲国产精品成人综合色在线婷婷| 国产无遮挡猛进猛出免费软件| 电影一区电影二区| 91成人国产在线观看|