51MCUプログラムの開発とUbuntuでのダウンロード

今学期は51のシングルチップマイクロコンピュータコースがあります。コードをデバッグするためのウィンドウは必要ありません。いくつかの情報を確認しましたが、あまり役に立ちません。次に、ubuntu(Linux汎用)での51のシングルチップマイクロコンピュータの開発とダウンロードについて説明します。** SDCC **と*を使用する必要があります。 * stcgal **。

一般的なLinuxでテスト済みで、Ubuntu 16.04、18.04.20.04を使用できます。

リソースのダウンロード: [https://download.csdn.net/download/ZhangRelay/12820423](https://download.csdn.net/download/ZhangRelay/12820423)

SDCCとは何ですか?

SDCC は、リターゲット可能で最適化された標準C(ANSI C89、ISO C99、ISO C11)コンパイラスイートであり、 Intel MCS51 マイクロプロセッサに基づくことを目的としています。 (8031、8032、8051、8052など)マキシム(以前はダラス**)、*** DS80C390 *フリースケール (以前は Motorola に基づいていました) HC08(hc08、s08)に基づいており、MCUは Zilog Z80 (z80、z180、gbz80、Rabbit 2000に基づいています) / 3000、Rabbit 3000A、TLCS-90) Padauk(pdk14、pdk15)および STMicroelectronics STM8 。 *** Padauk(pdk13) Microchip PIC16 および PIC18 ***ターゲットをサポートするための作業が進行中です。他のマイクロプロセッサに再配置できます。

SDCCスイートは、さまざまなFOSSライセンスを持つさまざまなソースから派生したいくつかのコンポーネントのコレクションです。 SDCCコンパイラキットには次のものが含まれます。

**SDCC は元々SandeepDuttaによって作成され、 GPL **ライセンスの下でリリースされました。最初のリリース以来、多くのバグ修正と改善が行われました。 1999年12月以降、コードはSourceForgeに移動され、すべての「ユーザーが開発者になる」ことが同じソースツリーにアクセスできるようになりました。 SDCCは、すべてのユーザーと開発者の入力を継続的に更新します。

インストール###

簡単に紹介します。

sdcc圧縮ファイルを解凍し(ここでは最新バージョン4.0.0が使用されます)、すべてのドキュメントは** sdcc-4.0.0 / share / sdcc / doc **にあります。

cd sdcc-4.0.0
    cp -r * /usr/local

コンパイル###

sdcc -mmcs51 xxx.c

最も簡単なインストール方法:

sudo apt install sdcc


stcgal-STC MCUISPフラッシュツール##

stcgalは、[STC MCU Ltd](http://stcmcu.com/)のコマンドラインフラッシュプログラミングツールです。 8051互換のマイクロプロセッサ。

STCマイクロプロセッサにはUART / USBベースのブートローダー(BSL)があります。パケットベースのプロトコルを使用して、シリアルリンクを介してコードメモリとIAPメモリを更新します。これは、インシステムプログラミング(ISP)と呼ばれます。 BSLは、さまざまな(ヒューズのような)機器オプションを構成するためにも使用されます。残念ながら、この合意は公に文書化されておらず、STCはプログラミング用の(大まかに)WindowsGUIアプリケーションのみを提供します。

**stcgalは、STCのWindowsソフトウェアに代わるフル機能のオープンソースです。複数のMCUをサポートし、非常にポータブルで、自動化に適しています。 ****

特徴###

クイックスタート ###

stcgalをインストールします(root /管理者権限が必要な場合があります):

pip3 install stcgal
Collecting stcgal
 Downloading https://files.pythonhosted.org/packages/b0/68/4924bd584b9e47639b28a1900cbced4e90deac7905fd996108ee2fcf975c/stcgal-1.6-py3-none-any.whl
Collecting tqdm>=4.0.0(from stcgal)
 Downloading https://files.pythonhosted.org/packages/28/7e/281edb5bc3274dfb894d90f4dbacfceaca381c2435ec6187a2c6f329aed7/tqdm-4.48.2-py2.py3-none-any.whl(68kB)100%|████████████████████████████████| 71kB 754kB/s 
Collecting pyserial>=3.0(from stcgal)
 Using cached https://files.pythonhosted.org/packages/0d/e4/2a744dd9e3be04a0c0907414e2a01a7c88bb3915cbe3c8cc06e209f59c30/pyserial-3.4-py2.py3-none-any.whl
Installing collected packages: tqdm, pyserial, stcgal
Successfully installed pyserial-3.4 stcgal-1.6 tqdm-4.48.2

ネットワークに問題がある場合は、次のコマンドを試してください。

pip3 install stcgal -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

stcgalを呼び出し、使用法を表示します。

stcgal -h
usage: stcgal [-h][-a][-r RESETCMD][-P {stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}][-p PORT][-b BAUD][-l HANDSHAKE][-o OPTION][-t TRIM][-D][-V][code_image][eeprom_image]

stcgal 1.6- an STC MCU ISP flash tool(C)2014-2018 Grigori Goronzy and others
https://github.com/grigorig/stcgal

positional arguments:
 code_image            code segment file to flash(BIN/HEX)
 eeprom_image          eeprom segment file to flash(BIN/HEX)

optional arguments:-h,--help            show this help message and exit
 - a,--autoreset       cycle power automatically by asserting DTR
 - r RESETCMD,--resetcmd RESETCMD
      shell command for board power-cycling(instead of DTR
      assertion)-P {stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto},--protocol {stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}
      protocol version(default: auto)-p PORT,--port PORT  serial port device
 - b BAUD,--baud BAUD  transfer baud rate(default:19200)-l HANDSHAKE,--handshake HANDSHAKE
      handshake baud rate(default:2400)-o OPTION,--option OPTION
      setoption(can be used multiple times, see
      documentation)-t TRIM,--trim TRIM  RC oscillator frequency inkHz(STC15+ series only)-D,--debug           enable debug output
 - V,--version         print version info and exit

stcgal -P stc89 xxx.ihx


プログラムを変更する必要があります。例としてLEDライトを取り上げます。

# include <reg52.h>//52シリーズMCUヘッダーファイル

sbit LSA = P1^5;//LEDビット選択デコードアドレスピンA
sbit LSB = P1^6;//LEDビット選択デコードアドレスピンB
sbit LSC = P1^7;//LEDビット選択デコードアドレスピンC
int  main(void){while(1)//メインプログラムには無限ループプログラムが設定されており、繰り返し動作します。{//LEDライトのメインスイッチングトランジスタQ6をオンにします。+LEDライトグループに5Vを追加
		LSA =0;
		LSB =0;
		LSC =0;
		P0 =0xfe;//発光ダイオードを点灯する}}

次のように変更する必要があります。

# include <8052.h>       	

# define LSA P1_5  			
# define LSB P1_6  			
# define LSC P1_7 
 			
int  main(void){while(1){
		LSA =0;
		LSB =0;
		LSC =0;
		P0 =0xfe;}}

Linuxでドライバーをインストールする必要はありません! ! !

sdcc -mmcs51 led.c

stcgal -P stc89 led.ihx

点滅:

# include <8052.h> 
     
# define LSA  P1_5  			//LEDビット選択デコードアドレスピンA
# define LSB  P1_6  			//LEDビット選択デコードアドレスピンB
# define LSC  P1_7  			//LEDビット選択デコードアドレスピンC
# define Led10 P0_7          	//P0を定義する.7名前はled10

int  main(void){
	 unsigned int a;//符号なし整数変数をしばらく定義します(1){//LEDライトのメインスイッチングトランジスタQ6をオンにします。+LEDライトグループに5Vを追加
		LSA =0;
		LSB =0;
		LSC =0;   
	  	Led10 =0;//LED10を点灯
		a =50000;while(a--);//50000サイクル、遅延の目的を達成するために時間が消費されます
	 	Led10 =1;;//LED10をオフにします
		a =50000;while(a--);//ディレイ}}

呼吸光:

# include <8052.h>

# define LSA   P1_5  			//LEDビット選択デコードアドレスピンA
# define LSB   P1_6  			//LEDビット選択デコードアドレスピンB
# define LSC   P1_7  			//LEDビット選択デコードアドレスピンC
# define Led10 P0_7          	//P0を定義する.7名前はled10

int atime=64;voiddelay(unsigned int pms)//遅延機能{
 unsigned int x;
 unsigned int y;for(x=pms;x>0;x--)for(y=11;y>0;y--);}voidledfade(unsigned int i)//呼吸光{
 Led10 =0;delay(i);
 Led10 =1;delay(atime-i);}
int  main(void){
	 int a;//符号なし整数変数をしばらく定義します(1){//LEDライトのメインスイッチングトランジスタQ6をオンにします。+LEDライトグループに5Vを追加
		LSA =0;
		LSB =0;
		LSC =0;for(a=0;a<atime;a++){ledfade(a);}for(a=atime;a>0;a--){ledfade(a);}}}

呼吸マーキー? ? ? (改善と最適化が必要です!)

# include <8052.h>

# define LSA   P1_5  			//LEDビット選択デコードアドレスピンA
# define LSB   P1_6  			//LEDビット選択デコードアドレスピンB
# define LSC   P1_7  			//LEDビット選択デコードアドレスピンC
# define Led10 P0_0          	//P0を定義する.0名前はled10
# define Led11 P0_1          	//P0を定義する.0名前はled11
# define Led12 P0_2          	//P0を定義する.0名前はled12
# define Led13 P0_3          	//P0を定義する.0名前はled13
# define Led14 P0_4          	//P0を定義する.0名前はled14
# define Led15 P0_5          	//P0を定義する.0名前はled15
# define Led16 P0_6          	//P0を定義する.0名前はled16です
# define Led17 P0_7          	//P0を定義する.0名前はled17です

int atime=64;voiddelay(unsigned int pms)//遅延機能{
 unsigned int x;
 unsigned int y;for(x=pms;x>0;x--)for(y=11;y>0;y--);}voidledfade0(unsigned int i)//呼吸光{
 Led10 =0;delay(i);
 Led10 =1;delay(atime-i);}voidledfade1(unsigned int i)//呼吸光{
 Led11 =0;delay(i);
 Led11 =1;delay(atime-i);}voidledfade2(unsigned int i)//呼吸光{
 Led12 =0;delay(i);
 Led12 =1;delay(atime-i);}voidledfade3(unsigned int i)//呼吸光{
 Led13 =0;delay(i);
 Led13 =1;delay(atime-i);}voidledfade4(unsigned int i)//呼吸光{
 Led14 =0;delay(i);
 Led14 =1;delay(atime-i);}voidledfade5(unsigned int i)//呼吸光{
 Led15 =0;delay(i);
 Led15 =1;delay(atime-i);}voidledfade6(unsigned int i)//呼吸光{
 Led16 =0;delay(i);
 Led16 =1;delay(atime-i);}voidledfade7(unsigned int i)//呼吸光{
 Led17 =0;delay(i);
 Led17 =1;delay(atime-i);}
int  main(void){
	 int a;//符号なし整数変数をしばらく定義します(1){//LEDライトのメインスイッチングトランジスタQ6をオンにします。+LEDライトグループに5Vを追加
		LSA =0;
		LSB =0;
		LSC =0;for(a=0;a<atime;a++){ledfade0(a);}for(a=atime;a>0;a--){ledfade0(a);}for(a=0;a<atime;a++){ledfade1(a);}for(a=atime;a>0;a--){ledfade1(a);}for(a=0;a<atime;a++){ledfade2(a);}for(a=atime;a>0;a--){ledfade2(a);}for(a=0;a<atime;a++){ledfade3(a);}for(a=atime;a>0;a--){ledfade3(a);}for(a=0;a<atime;a++){ledfade4(a);}for(a=atime;a>0;a--){ledfade4(a);}for(a=0;a<atime;a++){ledfade5(a);}for(a=atime;a>0;a--){ledfade5(a);}for(a=0;a<atime;a++){ledfade6(a);}for(a=atime;a>0;a--){ledfade6(a);}for(a=0;a<atime;a++){ledfade7(a);}for(a=atime;a>0;a--){ledfade7(a);}}}

51をロボットオペレーティングシステムROSに接続する必要がある場合は、以下を参照してください。



Recommended Posts

51MCUプログラムの開発とUbuntuでのダウンロード
[python] ubuntuの下のpython2とpython3
UbuntuにGerritをインストールしてデプロイする
ubuntuおよびwindowsでのRedisのインストール
Ubuntu16.04にnodejsとnpmをインストールします
Ubuntu16.04でのCUDA8.0とCUDA9.0の共存
UbuntuでQEMUをコンパイルしてインストールします
Linux開発の準備-VMwareをインストールしてUbuntuを実行する
Ubuntu16.04でのCUDAのインストールとアンインストール
Ubuntu19.10はC言語プログラムをコンパイルして実行します
Ubuntu 14.04 16.04 Linuxnvidiaドライバーのダウンロードとインストール
Ubuntuでpython開発環境を構築する
Ubuntu12.04でのDLNA / UPnPサーバーのインストールと構成
Ubuntu14.04でノードjsとnpmを構成します
Ubuntu12.04でのpulseaudioとAPIの使用法のインストール
UbuntuでのKaldiのインストールと構成のグラフィックチュートリアル
ubuntuの下のオーディオおよびビデオ編集ツールスタック
Ubuntu16.04は、VMwareでの完全なインストールと構成のチュートリアルをミラーリングします
win7とarchlinuxをubuntuの下のハードディスクにインストールします
Ubuntuを構築および構成するための組み込みLinux開発環境
ubuntuの下に新しいユーザーを追加し、オンラインユーザーを追い出します
UbuntuでのPythonでのGDALのインストールと使用
Ubuntu18.04.1のソースコードからOpenJDK8をコンパイルしてインストールします
Cpp web(1)UbuntuでCrowサービスをインストールして使用する
ubuntuでのrz / szコマンドのインストールと使用方法
Ubuntuにapache + PHPをインストールします
Ubuntuにnode.jsをインストールします
概要:UbuntuPython2.xおよび
Ubuntu16.04にpython3.6をインストールします
Ubuntu16.04にmysqlをインストールします
ubuntu14.10の下にThriftをインストールします
UbuntuにOpenJDK10をインストールします
Ubuntu14.04にCaffeをインストールします
UbuntuでのPythonMySQLd
Ubuntu構成開発環境
ubuntuの下で働き始める
Ubuntu20.04の経験と美化
Ubuntuの紹介とインストール
ubuntuでiptablesを使用する
Ubuntu開発環境の構成
2018-09-11Ubuntuにarduinoをインストールします
UbuntuでのLNMPのインストール
Ubuntuでのネットワーク構成
ROS Ubuntu 18.04 [2]にROSをインストールします。
UbuntuにMySQLをインストールする
UbuntuにYarm-PM2をインストールします
Ubuntuのバックアップと復元
について話す| Win10でLinuxシステムUbuntuをインストールして使用する
[毎日] php pdo拡張機能をインストールし、ubuntuの下にデータベースをインポートします
Ubuntu18.04でSSHサービスをインストールおよび構成するためのメソッドステップ