完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 程序如下:
#include #include "math.h" #define uchar unsigned char #define uint unsigned int #define ulint unsigned long int uint tta1 = 0; uint data1 = 0; uint data2 = 0; uint count = 0; long float total = 0; ulint output = 0; uchar chuan1[] = [0XCC,0X33,0XC3,0X3C]; uchar chuan2[]=[0XAA,0XC0,0X00,0X00,0X63,0X05,0X00,0X0A,0X00,0X0A,0XF8,0X00,0X00,0X1F]; uchar chuan3[]=[0XCC,0X33,0XC3,0X3C,0XAA,0XC1,0X08,0X00,0X00,0X01,0XCC,0X33,0XC3,0X3C]; //串口0发送函数 void UART0_send_data(uchar data0) [ while(!(IFG2&UCA0TXIFG)); UCA0TXBUF = data0; ] //时钟初始化 void sys_clock_init (void) //万用表侧时钟正常 [int i; WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= ~XT2OFF; BCSCTL2 |= SELM_2 + SELS + DIVS_1; BCSCTL3 |= XT2S_2; while((IFG1&OFIFG)) [ IFG1 &= ~OFIFG; for(i=0;i<0xff;i++); ] P5DIR = 0X70; P5SEL = 0X70; P1SEL = 0X10; //p1.4设置为外围模式,smclk P1DIR = 0X10; ] //串口初始化 void sys_UART0_init(void) //串口与液晶屏通讯正常 [ UCA0CTL1 |= UCSSEL_2; UCA0BR0=34; UCA0BR1=0; UCA0MCTL |= UCBRS2 + UCBRS1; UCA0CTL1 &= ~UCSWRST; UCA0MCTL &= ~UCOS16; P3DIR |= 0X10; P3SEL |= 0X10; // __bis_SR_register(GIE); _BIS_SR(GIE); ] //采样IO口初始化 void sys_IO_init() [ P1IE |= 0X08; //p1.3中断允许开启 P1IES |= 0X08; //p1.3下降沿触发中断 P1IFG &= ~0X08; //清除中断标志 P1OUT &= ~0X20; P1OUT |= 0X20; //ADC_RST,先8364复位,再置位 P1DIR |= 0XF5; //p1的012 456位设置为输出方向 P1OUT &= ~0X01; //清零,cs片选信号 P1OUT |= 0X04; //置1,8364读取信号停止 P1OUT &= ~0X40; //HOLDA B C=0 P2DIR |= 0X87; //p2的012和7位设置为输出 P2OUT &= ~0X07; //P2.0 1 2,设置读取模式为0,CHA0输出 P2OUT |= 0X80; __bis_SR_register(GIE); ] //定时器A初始化 void sys_timerA_init(void) [ TACCR0 = 200; TACCTL0 |= CCIE; TACTL |= TASSEL_2 + MC_1; //ta2,即p1.4产生5k方波 ] //主函数 void main (void) [ uint i,j,k; WDTCTL = WDTPW + WDTHOLD; sys_clock_init(); sys_UART0_init(); sys_TimerA_init(); sys_IO_init(); while(1) //液晶界面切换程序。 [ for(i=0;i<21;i++) [ UART0_send_data(0XAA); UART0_send_data(0X70); UART0_send_data(i); for(j=0;j<4;j++) UART0_send_data(chuan1[j]); for(j=0xffff;j>0;j--) for(k=0;k<5;k++); ] ] ] #pragma vector = PORT1_VECTOR __interrupt void PORT_1 (void) //进入中断,用指示灯闪烁表明EOC信号是否产生 [ count++; if(count == 600) [ P2OUT ^= 0X80; count=0; ] P1IFG &= ~0X08; /* uchar i; uint c ,d; P1IFG &= ~0X08; //中断标志清零 count++; P1OUT ^= 0X04; //P1.2取反(变为低电平) for(i=0;i<10;i++); //延时,等待读取数据 data1 = P4IN; P1OUT ^= 0x04; //p1.2取反(变为高电平) P1OUT ^= 0x04; //p1.2取反(变为低电平) for(i=0;i<5;i++); //延时,等待读取数据 data2 = P4IN; total += pow(data2*256+data1,2); if(count==5000) [ P2OUT ^= 0X80; output = sqrt(total/2500); d = output % 255*4; c = output /255*4; for(i=0;i<14;i++) UART0_send_data(chuan2); UART0_send_data(0X00); UART0_send_data(0X00); UART0_send_data(c); UART0_send_data(d); for(i=0;i<14;i++) UART0_send_data(chuan3); count=0; ] P1OUT ^= 0X04; //p1.2取反(高电平),停止读取数据 */ ] #pragma vector = TIMERA0_VECTOR //万用表测HOLDX信号1khz正常 __interrupt void Timer_A(void) [ tta1++; if(tta1 == 10) [ P1OUT ^= 0X40; //HOLDA HOLDB HOLDC 使用p1.6共同控制 tta1 = 0; ] ] 2 测试EOC信号是否输出:将msp430f2619单片机的P1.3脚接EOC。如果产生中断,则p2.7即led闪烁。 3. 实验:一直没有看到led闪烁。 4. 中断是否相应:将clk接入p1.3,led闪烁正常。 |
|
相关推荐
2 个讨论
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
686 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
601 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
744 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
526 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
167浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
128浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
56浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 14:00 , Processed in 0.818571 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号