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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2822|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品国产一区二区电影 | 中文字幕日韩一区 | 国内精品在线视频 | av色站| 一区二区三区四区日韩 | 国产在线观看一区二区 | 久久久久亚洲精品 | 婷婷二区| 国产精品久久久久久模特 | 免费精品 | 成人性生交大免费 | 欧美性tv | 精品1区2区 | 一级毛片视频 | 国产成人免费在线 | 在线成人 | 91综合网| 精品国模一区二区三区欧美 | 日韩不卡视频在线 | 成人在线视频免费观看 | 国产一区在线免费 | 无人区国产成人久久三区 | 日韩色图在线观看 | 久久精品小视频 | 精品日韩在线 | 亚洲一区二区三区免费视频 | 91高清视频在线 | 日韩成人免费av | 狠狠综合久久av一区二区老牛 | 在线视频一区二区三区 | 久久精品高清视频 | 中文在线视频观看 | 欧美aaaaa| 国产精品视频免费看 | 欧美成人a∨高清免费观看 色999日韩 | 国产yw851.c免费观看网站 | 日韩一区二区三区av | 女女百合av大片一区二区三区九县 | 国内自拍真实伦在线观看 | 一区视频| 在线免费黄色小视频 |