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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

中微單片機CMS89F11x想整一個點亮燈的小程序,編譯就報錯 附用戶手冊

[復制鏈接]
跳轉到指定樓層
樓主
ID:656213 發表于 2021-12-3 19:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
中微單片機,型號:CMS89F111 SOP-8,想整一個點亮燈的小程序,居然一直整不好,求助各位老師們能指點一下。 我看規格書里面講,可以進行位操作,寫了一句,P0.2 =1; 但是編譯就報錯。


#include "cms.h"

typedef unsigned int u16;          //對數據類型進行聲明定義
typedef unsigned char u8;

void main()
{        
        P0CL = 00100000;            //配置IO狀態, P0.2口設置為推挽輸出
        while(1)
        {        
                P0.2 = 1;
        }               
}

SCH.png (66.45 KB, 下載次數: 166)

SCH.png

1.png (63.48 KB, 下載次數: 165)

1.png

CMS89F11x用戶手冊_V1.5.pdf

3.07 MB, 下載次數: 14

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

使用道具 舉報

沙發
ID:624769 發表于 2021-12-3 23:36 | 只看該作者
既然,你選擇用  CMS IDE, 而不用KEIL  你就要尊重 CMS IDE 的語法。

P0.2 = 1   在CMS IDE 中是非法的。

在CMS IDE 中。你只能寫:    P0 |= 0x04;

而且就算你用 KEIL 也只能用 P0_2 = 1
回復

使用道具 舉報

板凳
ID:624769 發表于 2021-12-3 23:44 | 只看該作者

既然,你選擇用  CMS IDE, 而不用KEIL  你就要尊重 CMS IDE 的語法。

P0.2 = 1   在CMS IDE 中是非法的。

在CMS IDE 中。你只能寫:    P0 |= 0x04;

而且就算你用 KEIL 也只能用 P0_2 = 1


對了,另外,你的 P0CL 的寫法也是錯誤的,你要配置 推挽輸出,只能寫: P0CL = 0x20;
回復

使用道具 舉報

地板
ID:656213 發表于 2021-12-4 08:32 | 只看該作者
真是太感謝你了呀,可以了,我寫了個燈閃爍的程序,OK了。

#include "cms.h"

typedef unsigned int u16;          //對數據類型進行聲明定義
typedef unsigned char u8;

void delayms(u16 ms)
{
        u8 i;
                while(ms--)
                {
                        for(i=0;i<120;i++);
                }
}

void main()
{       
        P0CL = 0x20;            //配置IO狀態, P0.2口設置為推挽輸出
        while(1)
        {       
                 P0 |= 0x04;
                 delayms(600);
                 P0 &= 0x00;
                 delayms(600);
        }               
}
回復

使用道具 舉報

5#
ID:624769 發表于 2021-12-4 13:48 | 只看該作者
jiahz2019 發表于 2021-12-4 08:32
真是太感謝你了呀,可以了,我寫了個燈閃爍的程序,OK了。

#include "cms.h"

更正一點,
你用P0 &= 0x00; 雖然也能關閉LED, 但是他并不是拉低 P02 而是拉低整個P0, 并且不是“位操作”,你要真正拉低P02,并且是執行 位操作的話,(雖然不知道你為何執著為操作,為了速度?),
只能用這個代碼:

P0 &= 0xFB;

用CMS IDE 要學會隨時編譯,多觀察右側List文件, 確認你代碼的編譯結果, 你要你的代碼是進行位操作,就要察看,右側編譯后,是否出現  SETB   CLRB   SNZB  等,這些標志著是在進行位操作的匯編代碼,是的話說明你用的方法對,不是的話,就常嘗試修改代碼,直到達到你的目的,個人覺得,或許直接用匯編會更方便,反正他匯編指令也沒幾條。
回復

使用道具 舉報

6#
ID:656213 發表于 2021-12-4 14:37 | 只看該作者
本帖最后由 jiahz2019 于 2021-12-4 16:38 編輯

見笑了,用這個P0 &= 0x00純粹是偷懶,這里我是理解的。另外,對匯編也不熟悉呀,新手,前面只是學習了8051的C,還沒有獨立做過項目。 現在又遇到了一個問題,想啟用按鍵來控制LED燈的閃爍,之前學8051核的時候,可以直接位操作,取反位就可以了。這里不能直接用位操作了,不知如何下手了,下面是我整的一段,仿真不對,燈一直亮。 請再指教一二。 按鍵接口如上原理圖,

#include "cms.h"

typedef unsigned int u16;          //對數據類型進行聲明定義
typedef unsigned char u8;

void delayms(u16 ms)
{
        u8 i;
                while(ms--)
                {
                        for(i=0;i<120;i++);
                }
}

void main()
{        
        P0CL = 0x20;            //配置IO狀態, P0.2口設置為推挽輸出
        P1CH = 0x00;            //配置IO狀態, P1.4口設置為上拉輸入
        u8 key,temp ;
        while(1)
        {
                 temp = P1 ;                     //這個變量類型定義的好像有誤
                 if(temp & 0x10 == 0)       // 判斷按鍵是否按下
                 {
                         key++;
                         if(key >= 2)
                          {
                                key = 0;
                          }
                         if(key==0)
                                 {
                                         P0 |= 0x04;
                                         delayms(600);
                                 }
                         if(key==1)
                                 {
                                         P0 &= 0xFB;
                                         delayms(600);
                                 }

                 }
        }        
}
回復

使用道具 舉報

7#
ID:624769 發表于 2021-12-4 19:24 來自手機 | 只看該作者
在外面,手機上的51黑,不方便幫你改代碼,你現在的代碼是,一直按著按鍵的話,燈會閃,放手燈就會亮著或者滅著一直維持這個狀態,這是你設計的初衷么?
回復

使用道具 舉報

8#
ID:624769 發表于 2021-12-4 20:39 | 只看該作者
jiahz2019 發表于 2021-12-4 14:37
見笑了,用這個P0 &= 0x00純粹是偷懶,這里我是理解的。另外,對匯編也不熟悉呀,新手,前面只是學習了8051 ...

好了,上電腦了, 可以打代碼,
你這個CMS89F11X系列,不是8051核,是RISC核,所以,有些操作是不支持的,有好處,也有壞處,這也是我建議你要么干脆嘗試匯編的原因,因為也就50多條指令,比起8051是少多了,你真心想學的話,看著指令表嘗試寫寫,1天也就入門了。
好了,上面純屬建議,下面:

CMS89F11X  不支持位取反操作,但是,支持字節的與或操作,所以,如果你不是執著需要 “位操作”的話,想要LED閃爍的話,可以用 與或。
P0 ^= 0x04;     就可以翻轉 P02 的電平了。
比如你之前的閃燈代碼,完全可以這樣寫:

void main()
{        
        P0CL = 0x20;            //配置IO狀態, P0.2口設置為推挽輸出
        while(1)
        {        
                 P0 ^= 0x04;
                 delayms(600);
        }               
}

然后,你要檢驗 P14是否是低電平,不需要復雜的 賦值給 temp, 可以直接檢驗 P14, 如:
if((P1 & 0x10) == 0)            // 注意看,這里面的括號很重要,你就算用Temp 也需要這個括號,你之前的代碼,沒有括號,編譯完了是肯定不能正常工作的,恩,其他的,應該你自己能搞定了。
回復

使用道具 舉報

9#
ID:478073 發表于 2021-12-4 20:54 | 只看該作者
建議多同那些代理的FAE多溝同,他們解決問題干脆直接!
回復

使用道具 舉報

10#
ID:656213 發表于 2021-12-4 21:05 | 只看該作者
188610329 發表于 2021-12-4 20:39
好了,上電腦了, 可以打代碼,
你這個CMS89F11X系列,不是8051核,是RISC核,所以,有些操作是不支持 ...

呵呵,謝謝你的講解,我也剛從外面回來,我上面那段程序的本意是想用按鍵控制燈的亮滅,假如上電狀態燈是滅的,那么按一下,燈亮(常亮), 再按一下,燈滅。  你剛才講的那段程序我現在去試下。
回復

使用道具 舉報

11#
ID:656213 發表于 2021-12-4 21:42 | 只看該作者
春風十里吹死你 發表于 2021-12-4 20:54
建議多同那些代理的FAE多溝同,他們解決問題干脆直接!

基礎的問題,FAE才懶得搭理人,現在人家還怕沒有人買單片機嗎,
回復

使用道具 舉報

12#
ID:624769 發表于 2021-12-4 21:52 | 只看該作者
jiahz2019 發表于 2021-12-4 21:05
呵呵,謝謝你的講解,我也剛從外面回來,我上面那段程序的本意是想用按鍵控制燈的亮滅,假如上電狀態燈是 ...

按你的設想,代碼如下,不需要 DELAY 函數。

unsigned char stat;

void main()
{
    P0CL  = 0x20;
    P1CH  = 0x00;
        while(1)
        {
                if((P1 & 0x10) == 0)  
                {
                        while((P1 & 0x10) == 0);  //消抖
                        stat++; //更改標志位
                }
        if((stat & 0x01) == 1) P0 |= 0x04;
                else        P0 &= 0xFB;
        }
}
回復

使用道具 舉報

13#
ID:624769 發表于 2021-12-4 22:30 | 只看該作者
188610329 發表于 2021-12-4 21:52
按你的設想,代碼如下,不需要 DELAY 函數。

unsigned char stat;

感覺不是很簡潔,又重新寫了一個不需要變量的:


void main()
{
        P0CL = 0x20;
        P1CH = 0x00;
        while(1)
        {
                while(P1 & 0x10);  //等待按鍵按下
                while(!(P1 & 0x10));  //等待按鍵彈起               
                P0 ^= 0x04;
        }
}

回復

使用道具 舉報

14#
ID:1111466 發表于 2024-2-23 21:05 | 只看該作者
想學習CMS的編程,但是網上找不到相關教程。相對而言51的資料真的好豐富
回復

使用道具 舉報

15#
ID:149759 發表于 2024-2-24 11:19 | 只看該作者
P0.2不對
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美视频免费在线观看 | 久久国产欧美日韩精品 | 日韩精品一区二区三区视频播放 | 天天搞天天操 | 日韩精品在线观看免费 | 午夜精品久久久久久久99黑人 | 亚洲精品电影网在线观看 | 在线观看中文字幕一区二区 | 91天堂 | 久久亚洲精品国产精品紫薇 | 黄色大片免费观看 | 国产91视频播放 | 欧美精品在线观看 | 欧美一区二区三区在线观看视频 | www.99热这里只有精品 | 国产91黄色 | 婷婷久久网 | 久久一区二区三区四区五区 | 青青久久久 | 国产99精品 | 久www | 日韩欧美在线观看视频 | 午夜电影福利 | 亚洲视频中文 | 精品一区二区三区四区外站 | 欧美日韩在线一区二区 | 成人九色 | 蜜桃五月天 | 农村真人裸体丰满少妇毛片 | 天天干天天谢 | 一区二区视频在线 | 精品产国自在拍 | 狠狠干天天干 | 日韩一区二区黄色片 | 天天玩夜夜操 | 国产黄色小视频 | 韩三级在线观看 | 九色视频网站 | 久久网亚洲 | 国产精品99久久久久久宅男 | 久久手机视频 |