这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » halibote523使用手记(从安装到程序编写)

共88条 2/9 1 2 3 4 5 6 ›| 跳转至
专家
2010-10-13 20:21:51     打赏
11楼
书写代码:
只显示要测试的灯的代码:(灯一亮一暗的显示)
void delay(unsigned int i)
{
   unsigned int m,n;
   for(m=0;m<i;m++)
     {
     for(n=0;n<6000;n++)
       {
       asm("\tNOP");
       }
     }
}
/******************************************************************************
NAME:  main ();
FUNCTION: main loop
******************************************************************************/
void main (void)
{
 Init ();
 while(1)
 {
 delay(10);
 PDR6_P62 = 1;
 delay(10);
 PDR6_P62 = 0;
 }
}
这时候直接start stup是没有什么现象的,得需要设置STUP

专家
2010-10-13 20:24:11     打赏
12楼
设置步骤如下:在工程目录下,右击:Debug----Chang







专家
2010-10-13 20:30:13     打赏
13楼
点击:Debug ---start Debug
点击:Debug ---Run---Go
得到下面的图片,图片是静止,当然也看不到闪烁的,但是这是经过我一步步的操作,是没啥疑问的!!图片图下:::::::::::::::::::::


专家
2010-10-13 20:46:45     打赏
14楼
IO口寄存器介绍:
PDR:端口数据寄存器    0:输出低    1:输出高
DDR:数据方向寄存器   0:输入         1:输出
PUL:上拉控制寄存器    0:禁止         1:使能
ILSR:输入电平选择寄存器  0x04:CMOS      0x00:磁带(只有PDR0_P04具有次功能)
输入模式:有AD输入以及数字输入,由寄存器:AIDRL_Pyz来设置
比如:DDR0_P01=0;(设置输入)AIDRL_P01=1;(禁止AN1作为AD的输入)



明天再继续传定时器操作或者是URAT的的操作过程以及注意事项!

院士
2010-10-14 15:28:06     打赏
15楼
为什么会有这样的说法?

你得到了就公平了?

专家
2010-10-14 19:38:21     打赏
16楼
管教的详细说明:

CN303代表的管教为CPU的第11到第20管教
与板子的相应的对比图是下图:

红色的数字20为CN303的1,也就是P12

专家
2010-10-14 20:11:24     打赏
17楼
定时器的操作(定时的时间内让LED亮与灭)
首先看的是定时寄存器的描述
1、控制状态寄存器0(T00CR0/T01CR0)
   bit0:F0,bit1:F1,bit2:F2,bit3:F3,bit4:C0,bit5:C1,bit6:C2,bit7:IFE
2、控制状态寄存器0(T00CR1/T01CR1)
   bit0:OE,bit1:SO,bit2:IF,bit3:BF,bit4:IR,bit5:IE,bit6:HO,bit7:STA
3、定时器模式寄存器(TMCR0)
   bit0:FE00,bit1:FE01,bit2:FE10,bit3:FE11,bit4:MOD,bit5:IIS,bit6:TO0,bit7:TO1

操作的步骤:
1、设定模式(T00CR0:[F3:F0])=0000
2、设定计数器始终(T000CR0:[C2:C0])
3、设定计数器值
4、设定中断优先级
5、使能定时器输出(T00CR1:OE=1)
6、启动定时器(T00CR1:STA=1)









专家
2010-10-14 20:14:10     打赏
18楼

定时器操作的程序如下:(自己测试用的)
main.c文件:
#include "mb95200.h"

unsigned int Systemtime;

/******************************************************************************
NAME:  InitCompTimer();
FUNCTION: initial timer for the interval timer (Free run) function
******************************************************************************/
void InitCompTimer (void)
{
 T01DR = 0x01;    // set count value (high 8 bit)
 T00DR = 0xFF;    // set count value (low 8 bit)
 TMCR0 = 0x10;    // 16-bit, no filtering
 T00CR0 = 0x82;    // interval timer in free run mode
        // enable IF flag interrupt
 T00CR1 = 0xA1;    // enable interrupt, enable output
        // start timer
}

/******************************************************************************
   name: CompTimer ();
   function: enter ISR while the counter value matches the pre-set value
******************************************************************************/
__interrupt void CompTimer (void)
{
 T00CR1_IE = 0;    // disable interrupt
 T00CR1_IF = 0;    // clear flag

 //...      // interrupt service routine
 Systemtime++;

 T00CR1_IE = 1;    // enable interrupt
}

/******************************************************************************
   name: main ();
   function: main loop
******************************************************************************/
void main (void)
{
 InitCompTimer();
 InitIrqLevels();
 __EI();
 
 DDR6_P63 = 1;
 while (1)
 {
 if(Systemtime<=10)
    {
    PDR6_P63=0;
    }
 if(Systemtime>=20)
    {
    PDR6_P63=1;
    }
 if(Systemtime>=30) {Systemtime=0;}
 }
}


专家
2010-10-14 20:23:31     打赏
19楼
定时器中断向量的设置:
Vertor.c文件里面



然后声明中断入口函数


修改中断入口函数:


注意:
红线的函数为main文件的函数:__interrupt void CompTimer (void)
P63控制的蓝色的灯,现象如下:


定时器的操作完毕
(待续。。。下次是UART的测试)

专家
2010-10-14 20:44:17     打赏
20楼
以定时器为例,关于中断优先级的解释:
    ILR1 = 0xF3;      //  IRQ4:  UART/SIO ch0
                                 //  IRQ5:  8/16-bit timer ch0 (lower)
                                 //  IRQ6:  8/16-bit timer ch0 (upper)
                                 //  IRQ7:  LIN-UART (reception)

F3:二进制为:11 11 01 11
那么:
11--IRQ4:  UART/SIO ch0
11--IRQ5:  8/16-bit timer ch0 (lower)
01--IRQ6:  8/16-bit timer ch0 (upper)
11--IRQ7:  LIN-UART (reception)

在每个ILR中可以中断优先级00 01 10 11, 优先级00为最大,ILR0>ILR5

共88条 2/9 1 2 3 4 5 6 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]