STC89C52 CAN Bus サンプルコード

UIROBOT CAN Bus 製品の STC89C52 開発サンプルコード。8051 マイクロコントローラ、UART-CAN、モータ制御。

# STC89C52 CAN Bus サンプルコード このページでは、STC89C52 8051 マイクロコントローラを使用して UIROBOT CAN bus デバイスを制御するためのサンプルコードを提供します。 --- ## Quick Selection | 接続方法 | 対応製品 | ドキュメント | |---------|---------|-------------| | **UART-CAN (UIM2513)** | UIM342, UIM342A | [AN021] | ## セクション 1: UART-CAN (UIM2513) ### 背景 STC89C52 の UART インターフェースを UIM2513 ゲートウェイに接続して CAN bus モータを制御します。 ### 配線 ``` STC89C52 UIM2513 TXD (P3.1) ------> RX RXD (P3.0) <------ TX GND ------> GND ``` ### サンプルコード ```c #include <reg52.h> #define MOTOR_ID 0x05 void UART_Init() { TMOD = 0x20; // タイマ1、モード2 TH1 = 0xFD; // 9600 bps @ 11.0592MHz SCON = 0x50; // モード1、受信有効 TR1 = 1; } void UART_SendByte(unsigned char dat) { SBUF = dat; while(!TI); TI = 0; } void CAN_SendSpeed(unsigned char id, unsigned int speed) { UART_SendByte(0xAA); // フレームヘッダ UART_SendByte(id); // CAN ID UART_SendByte(0x1D); // CW: JV 設定 UART_SendByte(speed & 0xFF); // 速度下位 UART_SendByte((speed >> 8) & 0xFF); // 速度上位 UART_SendByte(0xCC); // フレーム終了 } void main() { UART_Init(); while(1) { CAN_SendSpeed(MOTOR_ID, 1000); // 1000 pps // ... } } ``` --- ## ダウンロード | アプリケーションノート | 説明 | ダウンロードリンク | |---------------------|------|-----------------| | AN021 | STC89C52 + UIM2513 | [Download ZIP](https://www.uirobot.com) | --- ## 関連ドキュメント - [UIM2513 RS232-CAN ゲートウェイ](/docs/uim2513) - [STM32 サンプルコード](/docs/stm32-examples) - [Arduino CAN Bus サンプルコード](/docs/arduino-examples) --- *最終更新: 2026-07-03*