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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2659|回復: 6
收起左側

51單片機向STC8H移植問題

[復制鏈接]
ID:743542 發表于 2022-1-10 17:57 | 顯示全部樓層 |閱讀模式
大佬們,我最近在學習寫STC8單片機的程序,但是我之前只學過89C51的,而且我不知道怎么規范化程序。官方的文檔看起來也很晦澀,有沒有大佬能夠指導一下我的這個程序的移植問題~我是用89C51寫的兩個按鍵來控制數碼管顯示0-8,并且輸出數字到P2口,向STC8移植并且規范化需要怎么來寫呢?
  1. #include<reg51.h>
  2. #define uchar unsigned char        
  3. #define uint unsigned int
  4. sbit key=P0^0;
  5. sbit key1=P0^1;
  6. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  7. void delay_lms(uint i){
  8.         uchar t;
  9.         while(i--)
  10.                 for(t=0;t<=150;t++);
  11. }
  12. void main(){
  13.         uchar i=0;
  14.         key=1;
  15.         P1=0xc0;
  16.         while(1){
  17.                 if(key==0){
  18.                         delay_lms(20);
  19.                         if(key==0){
  20.                                 if(i<=6){i++;}
  21.                                 else{i=7;}
  22.                                 
  23.                                 P1=tab[i];
  24.                                 P2=i;
  25.                                 if(i==7)i=7;
  26.                         }
  27.                                 while(key==0);
  28.                 }
  29.                 if(key1==0){
  30.                         delay_lms(20);
  31.                         if(key1==0){
  32.                                 if(i>=1){i--;}
  33.                                 else{i=0;}
  34.                                 P1=tab[i];
  35.                                 P2=i;
  36.                                 if(i==0)i=0;
  37.                         }
  38.                                 while(key1==0);
  39.                 }
  40.         }
  41. }
復制代碼


回復

使用道具 舉報

ID:161164 發表于 2022-1-10 18:58 | 顯示全部樓層
你的代碼很簡單
沒有用到任何寄存器,可直接使用
但要注意:除P3.0和P3.1外,其余所有I/O口上電后的狀態均為高阻輸入狀態,
在使用I/O口時必須先設置I/O口模式
2022-01-10_185818.png
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;

    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;

而目STC8比傳統51單片機快12倍
延時函數要改一改

題外話:阻塞式延時浪費系統資源,少用為妙
回復

使用道具 舉報

ID:743542 發表于 2022-1-10 19:36 | 顯示全部樓層
lkc8210 發表于 2022-1-10 18:58
你的代碼很簡單
沒有用到任何寄存器,可直接使用
但要注意:除P3.0和P3.1外,其余所有I/O口上電后的狀態 ...

謝謝大佬的回復!我看了官方的例程,已經將I/O口初始化了,但是我現在的主要的問題是我現在的輸出最高就是0x07,但是我不知道怎么在不改變0x0x的情況下進行寫入數據,我只知道應該用或/非,但是不知道具體怎么操作,另外就是我現在寫的代碼很簡單,但是如果我繼續加功能這樣寫肯定是不行的,我規范化的話該怎么寫呢?
回復

使用道具 舉報

ID:57657 發表于 2022-1-10 21:43 | 顯示全部樓層
lkc8210 發表于 2022-1-10 18:58
你的代碼很簡單
沒有用到任何寄存器,可直接使用
但要注意:除P3.0和P3.1外,其余所有I/O口上電后的狀態 ...

你應該直接用STC提供的頭文件,除頭文件外 不要用 sfr。
不同型號的某些寄存器sfr地址都可能不一樣,否則出現問題都找不到北。
1.png
回復

使用道具 舉報

ID:161164 發表于 2022-1-10 21:45 | 顯示全部樓層
erevn38107 發表于 2022-1-10 19:36
謝謝大佬的回復!我看了官方的例程,已經將I/O口初始化了,但是我現在的主要的問題是我現在的輸出最高就 ...

你這情況是需要學習一下單片機的C語言
回復

使用道具 舉報

ID:884042 發表于 2022-1-12 19:17 | 顯示全部樓層
STC8H還是基于8051內核改的,只不過是增加了can,adc,pwn,pac等模塊,所以只要你的程序沒用到其它的一些特殊寄存器的話直接復制程序就得了。。。。。。。
回復

使用道具 舉報

ID:382454 發表于 2022-1-12 22:14 | 顯示全部樓層
記住學會用模塊化編程。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频精品 | 亚洲黄色高清视频 | 日本欧美在线观看视频 | 亚洲国产成人精品女人久久久野战 | 国产精品一区二区三区免费观看 | 在线播放中文字幕 | 欧洲精品久久久久毛片完整版 | 日韩精品久久一区 | 国产综合精品一区二区三区 | 国产东北一级毛片 | 全免费a级毛片免费看视频免费下 | 精品国产乱码久久久久久牛牛 | 日韩视频中文字幕 | 丝袜一区二区三区 | 欧美日韩一区二区三区四区 | 天堂综合 | 国产精品欧美一区二区三区不卡 | 涩爱av一区二区三区 | 国产精品久久久久久久免费大片 | 国产视频一区二区在线观看 | 欧美一区二区三区国产 | 欧美国产日韩一区 | 亚洲日本欧美日韩高观看 | 亚洲 中文 欧美 日韩 在线观看 | 丁香婷婷在线视频 | 日本天堂一区二区 | 超碰一区二区 | 成人免费在线小视频 | 久久久久久国产精品三区 | 精品成人| av一区二区三区四区 | 亚洲欧美综合精品久久成人 | 欧美日韩国产精品 | 久久久久网站 | 国产精品久久久久久久岛一牛影视 | 欧美一区二区小视频 | 国产福利91精品一区二区三区 | 福利片一区二区 | www.日本在线播放 | 亚洲欧洲一区二区 | 免费h在线 |