请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430F5528 您好,
我想测量传输和接收之间的时间间隔,并将其显示在LCD上。 我编写了一个代码,在数据传输时启用计时器0,在接收数据时停止计时器。 然后将TA0R值复制到LCD。 每次显示数据时,它都是一些随机值。 我将在此处插入我的代码。 如果有任何问题,请指导我。
#include <MSP430-h>
#define DR P4OUT = P4OUT | BIT1 // define RS high
#define CWR P4OUT = P4OUT &(~BIT1)// define RS low
#define read P4OUT = P4Write | BIT2 // define read signal R/W = 1 for reading
#define write P4OUT = P4OUT &(~BIT2)/ define) 信号R/W = 0表示写入
#define enable_high P1OUT = P1OUT | BIT4 //定义启用高信号
#define enable_low P1OUT = P1OUT &(~BIT4)//定义启用低信号
无符号int i;
}unsigned int j;
void delay (unsigned int k)
{
for (j=0;j<=k;j;j+)
;void i=100;
DELAY (2);
enable_low;
}
void data_read(void)
{
enable_low;
delay(2);
enable_high
;}
void check_busy (void)
{
PIR &=~(BIT3);//将WFP设置1.3 为输入
,同时(PJIN&BIT3)=1)
{
DATA_Read();JDPIR|CWOR=0CMD; 1.3
=0=0=0;{)= 0WF0;{PJPJPJUMP0;{)== 0;{)= 0=0=0;{PJPJPJF0;{)=输出<= 0;{= 0;{)= 0CMF0=}发送<= 0 //发送较高的nibble
data_write();//给出启用触发
器PJOUT =(PJOUT & 0xF0)|(CD & 0x0F);//发送较低的nibble
data_write();//给出启用触发
器}
void send_data (unsigned int data){
CHECK_busy();
write;
DR;
0xOUT =(PJOUT & 0xF0F0)|/_send data>4; send
// given enable trigger
PJOUT =(PJOUT & 0xF0)|(data & 0x0F);// send lower nibble
data_write();// given enable trigger
}
void send_string(char*s)
{
while (*s)
{
send_data(*s);
s++
}
}}PJDLC_init(void)
{
PJDIR |=0x4DIR= 0xPf;= 0x4DIF=0
P1OUT &= 0x00;
send_command(0x33);
send_command(0x32);
// 4位模式
send_command(0x0E);//清除屏幕
send_command(0x01);//在send_command(0x06)上显示光标
;//递增光标
send_command(0x80);//
WDTTL主列1;wint =1wt //停止WDT
P4SEL = BIT4+BIT5; // WFP 3.4 ,5 = USI_A0 TXD/RXD
UCA1CTL1 |= UCSWRST; //**将状态机置于复位**
UCA1CTL1 || UCSSEL_2; // SMCLK
UCA1BR0 = 6; // 1MHz 9600 (请参阅用户指南)
UCA1BR1 = 0; // 1MHz 9600
UCA1MCTL = UCBRS_0 + UCBRF_13 + UCOS16;// Modln UCBRSx=0,UCBRFx=0,
//过度采样
UCA1CTL1 &=~UCSWRST; //**初始化USCI状态机**
UCA1IE |= UCRXIE; //启用USI_A0 RX中断
,同时(!(UCA1IFG&UCTXIFG)); // USI_A0 TX缓冲器就绪?
UCA1TXBUF = 53; // tx -> RXed character
__bis_sr_register (LPM0_BITS + GIE); //输入LPM0,启用中断
__NO_OPEINENT(); //对于调试器
,//
回显RXed字符,确认TX缓冲区已就绪,首先
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=UISR_A1_vector
__interrupt void USI_A1_ISR(void)
#Elif defined(___GSCI_attribute__)
#endif
{
SWITCH(__EIN_RANGE(UCA1IV,4)){
案例0:break; //矢量0-无中断
情况2:
TA0CTL = MC__STOP;
数据= TA0R;//矢量2 - RXIFG
lcd_init();
send_data (data);
同时(!(UCA1IFG&UCTXIFG)); // USI_A0 TX缓冲器就绪?
UCA1TXBUF = UCA1RXBUF; // TX -> RXed字符
TA0CCR0 = 6.5535万;
TA0CTL = tassel_2 + MC_1 + TCLR; // SMCLK,上行模式,清除TAR
中断;
案例4:
中断; //矢量4- TXIFG
默认值:中断;
}
谢谢...
Pabel