久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
汽車總線sent協(xié)議轉(zhuǎn)RS232輸出單片機(jī)源程序
[打印本頁]
作者:
ruxiangjian
時(shí)間:
2017-6-24 13:35
標(biāo)題:
汽車總線sent協(xié)議轉(zhuǎn)RS232輸出單片機(jī)源程序
將汽車總線sent協(xié)議內(nèi)容通過RS232方式輸出。程序使用C8051F340芯片。
單片機(jī)源程序如下:
//串口通迅實(shí)驗(yàn),將該程序的HEX下載到開發(fā)板,用串口調(diào)試助手軟件波特率設(shè)為9600
//發(fā)送任意一個(gè)字符,單片機(jī)返回該字符的ASII碼
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <c8051f340.h> // SFR declarations
#include <stdio.h>
//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------
#define SYSCLK 22118400 // SYSCLK frequency in Hz
#define BAUDRATE 9600 // Baud rate of UART in bps
sbit led1=P2^2;
sbit led2=P2^3;
sbit P20=P2^0;
//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void UART0_Init (void);
void PORT_Init (void);
void Timer0_Init (int);
void Ext_Interrupt_Init (void);
void INT1_ISR (void);
void Timer0_init (void);
unsigned int data count,tick,tickTemp,i,type;
unsigned int data dataR[20] ;
unsigned short data Sent=0,i;
bit data flagR,flag2,flagp01;
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)
{
flag2=0;
PORT_Init(); // Initialize Port I/O
PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
SYSCLK_Init (); // Initialize Oscillator
Ext_Interrupt_Init(); // enable)
led1=1;
led2=0;
UART0_Init();
Timer0_init();
EA=1;
while (1)
{
if(flag2||P20==0)
{
EA=0;
printf("angle= %f\n",(dataR[1]*256+dataR[2]*16+dataR[3])*283.0/4095);
led2=~led2;
Sent=0;
type=0;
flag2=0;
EA=1;
}
}
}
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// P0.4 digital push-pull UART TX
// P0.5 digital open-drain UART RX
//
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
P0MDIN &=~0xc0 ;
P0MDOUT |= 0x10; // Enable UTX as push-pull output
XBR0 = 0x01; // Enable UART on P0.4(TX) and P0.5(RX)
XBR1 = 0x40; // Enable crossbar and weak pull-ups
P2MDOUT |= 0x0c;
}
//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters : None
//
// This routine initializes the system clock to use the internal oscillator
// at its maximum frequency.
// Also enables the Missing Clock Detector.
//-----------------------------------------------------------------------------
void SYSCLK_Init (void) //初始化系統(tǒng)時(shí)鐘
{
//int i=0;
unsigned short data dly=0,dlyb=12;
//------------------------------------
//使能外部振蕩器
OSCXCN |=0X67; //0110 0111
dlyb=22;
do {
dly=120;
while(dly--);
}while(dlyb--);
//等待1毫秒
do{
dly=100;
while(dly--);
}while((OSCXCN&0X80)!=0X80);
//查詢XTLVLD =>1。
dly=100;
while(dly--);
CLKSEL |=0X01;
// OSCICN = 0x00;
}
void Timer0_init (void)
{
CKCON |=0X04;
TL0 = TH0=190; // Init Timer1
TMOD &= ~0x0f; // TMOD: timer 1 in 8-bit autoreload
TMOD |= 0x02;
TR0 = 1; // START Timer1
ET0=1;
}
//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
//
// Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
//-----------------------------------------------------------------------------
void UART0_Init (void)
{
SCON0 = 0x10; // SCON0: 8-bit variable bit rate
// level of STOP bit is ignored
// RX enabled
// ninth bits are zeros
// clear RI0 and TI0 bits
//TH1 = 256-(SYSCLK/BAUDRATE/2/12);
TH1=256-96;
// CKCON &=~0x0c;
// CKCON |= 0x00; // T1M = 1; SCA1:0 = 00
TL1 = TH1; // Init Timer1
TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit autoreload
TMOD |= 0x20;
TR1 = 1; // START Timer1
TI0 = 1; // Indicate TX0 ready
}
void Ext_Interrupt_Init (void)
{
TCON |= 0x05; // /INT 0 and /INT 1 are edge triggered
IT01CF = 0x10; // /INT0 active low; /INT0 on P0.0;
// /INT1 active low; /INT1 on P0.1
EX0 = 1; // Enable /INT0 interrupts
EX1 = 1; // Enable /INT1 interrupts
}
void INT1_ISR (void) interrupt 2
{
//同步計(jì)時(shí)器
TR0 = 0;
TL0 = TH0=191;
TR0 = 1; // START Timer1
//
if(tick>=34) tick=0;
//flagp01=P0^1;
tickTemp=tick;
tick=0;
if(flagR&&(Sent<=9)&&(tickTemp>=11)&&(tickTemp<=28))
{
dataR[Sent]=tickTemp-11;
Sent++;
}
if(flagR&&(Sent>=8))
{
Sent=0;
flagR=0;
flag2=1;
}
// if((tickTemp<10)||(tickTemp>28))
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
Sent協(xié)議轉(zhuǎn)RS232.rar
(40.53 KB, 下載次數(shù): 79)
2017-6-24 13:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
xljxjh
時(shí)間:
2018-12-20 15:37
剛好要用到,學(xué)習(xí)下!
作者:
彼岸思晴
時(shí)間:
2019-5-7 13:34
支持
作者:
wisdomlau
時(shí)間:
2019-8-15 22:44
支持一下,不知道有沒有參考價(jià)值
作者:
wwbiu
時(shí)間:
2020-11-24 10:53
tick=0; // ? tick 不是恒定 3us 或 3.3us , 為什么要清0?
作者:
wwbiu
時(shí)間:
2020-11-24 14:38
本帖最后由 wwbiu 于 2020-11-24 15:45 編輯
幫看一下,我要抓到SENT信號(hào)的8個(gè)數(shù)據(jù),其中6個(gè)用來解碼,怎么改?
if(INT2IF) //下降沿中斷,每個(gè)節(jié)拍計(jì)數(shù) 1/16us
{
SENT.table[0]=TMR3L; // 抓到的數(shù)值
SENT.table[1]=TMR3H; //SENT:168us=2688個(gè)計(jì)數(shù) <- 同步較準(zhǔn)信號(hào)
TMR3H=0; // 36us =576 個(gè)計(jì)數(shù) <- 0
TMR3L=0; // 81us =1296個(gè)計(jì)數(shù) <- 15
if(SENT.x>2500){SENT_flag=1;SENT_CNT=0;} //同步較準(zhǔn)信號(hào)到來后,設(shè)定標(biāo)記
if((SENT_flag==1)&&(SENT_CNT<9)&&(SENT.x>500)&&(SENT.x<1350)) //濾波
{
SENT_CNT++;
SENT_data[SENT_CNT]=SENT.x; //保存抓取到的8個(gè)數(shù)字信號(hào)
if(SENT_CNT>=9)
{
SENT_CNT=0; SENT_flag=2;
}
}
if(SENT_flag=2) //解碼,
{
tps1=((SENT_data[1]&0x0F)*256)+((SENT_data[2]&0x0F)*16)+(SENT_data[3]&0x0F); tps2=((SENT_data[6]&0x0F)*256)+((SENT_data[5]&0x0F)*16)+(SENT_data[4]&0x0F);
SENT_flag=0; //從頭開始
}
INT2IF=0;
TMR3IF=0;
}
if(TMR3IF)TMR3IF=0;
作者:
rock00210
時(shí)間:
2022-5-12 09:09
STC89C52單片機(jī)可以解析嗎?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本精品一区二区三区在线观看视频
|
天天综合永久
|
免费观看一级黄色录像
|
狠狠爱免费视频
|
美女爽到呻吟久久久久
|
天天拍天天射
|
日本黄色免费视频
|
欧美精品在线播放
|
亚洲高清免费视频
|
成人免费视频网站在线看
|
成年人视频免费在线观看
|
中文字幕成人网
|
成人免费观看男女羞羞视频
|
黄色操视频
|
爱操影视
|
国产欧美在线一区二区
|
欧洲精品在线观看
|
三级av在线
|
免费黄色在线观看
|
激情av在线
|
精品视频99
|
天堂三级
|
成年免费在线观看
|
欧美成视频在线观看
|
欧美日韩国产精品一区
|
丁香六月激情
|
韩国av一区二区
|
亚洲九九
|
色综合网站
|
综合二区
|
亚洲午夜久久久
|
麻豆亚洲
|
国产精品免费一区二区
|
九九热精品在线视频
|
久久久日韩精品一区二区三区
|
91看片网
|
99久久婷婷国产综合精品电影
|
久久久国产一区二区三区四区小说
|
粉嫩一区二区三区四区公司1
|
最新日韩精品
|
国产中文字幕在线
|