-
源程序代码:
(1)所需的复位和中断向量定义文件“vectors.asm”
// 该文件利用汇编语言代码定义了复位和中断向量
.title "vectors.asm"
.ref _c_int0,_nothing
.sect ".vectors"
reset: b _c_int0
int1: b _nothing
int2: b _nothing
int3: b _nothing
int4: b _nothing
int5: b _nothing
int6: b _nothing
(2)主程序
//该程序利用LF2407的SPI模块向MAX5121芯片发送数据用于D/A转换,MAX5121的模拟输出端输出一个三角波
//用C语言编写
#include "register.h"
int GPR3;
int flag1;
int flag;
//系统初始化子程序
int initial()
{
asm(" setc INTM"); //屏蔽中断
WSGR=0X00; //禁止所有的等待状态
asm(" CLRC SXM");
asm(" CLRC OVM");
asm(" CLRC CNF"); //B0被配置为数据空间
*SCSR1=0X81FE; //CLKIN=6M,CLKOUT=24M ,并且使能到SPI模块的时钟
*WDCR=0X0E8; //不使能看门狗
}
//SPI模块初始化子程序
int SPIINITIAL()
{
*SPICCR=0X004F; //16 char bits ,在SPICLK的下降沿发送数据,与MAX5121在
//上升沿接收数据配合
*SPICTL=0X0006; //使能主动模式,一般的时钟方式,使能TALK
*SPIBRR=0X0007; //SPI的波特率为3M,CLKOUT=24M
*MCRB=0X003C; //设置通用引脚为SPI功能的引脚
*MCRC=*MCRC&0X0FFFE; //设置IOPE0脚为通用引脚
*SPICCR=*SPICCR|0X0080; //使SPI退出复位状态
}
//SPI发送数据子程序,需要发送的数据存放在GPR3寄存器中
int SPITRANS()
{
*PEDATDIR=(*PEDATDIR|0X0100)&0X0FFFE;//设置IOPE0为输出,且输出低电平,
//以选中MAX5121芯片
*SPITXBUF=GPR3; //向SPI的发送缓冲器写一个发送数据
while(1)
{
flag=*SPISTS&0x40; //flag=SPI的中断标志
if(flag==0x40) break; //如果SPI的中断标志的中断标志为1,则证
//明SPI已经发送成功,则停止等待
}
*SPIRXBUF=*SPIRXBUF; //虚读SPIRXBUF寄存器,以清除SPI中断标志
*PEDATDIR=*PEDATDIR|0x01; //发送完毕,则IOPE0输出高,使发送的数据输
//出到MAX5121的输入寄存器和DAC寄存器中
}
//主程序
main()
{
initial(); //系统初始化
SPIINITIAL(); //SPI初始化
GPR3=0x4000; //根据MAX5121的格式写一个数据,使其输出的模
//拟量为0,具体的数据格式请参照表9.5
flag1=0x00; //三角波上升沿、下降沿标志,当flag1=0时,为上
//升沿,当flag1=1时,为下降沿
while(1)
{
if(flag1==0x00) GPR3=GPR3+2; //因为数据从倒数第2位开始,故要使数据加1,则
//需要在实际的寄存器中加2,此操作对应三角波的
//上升沿
else GPR3=GPR3-2; //因为数据从倒数第2位开始,故要使数据减1,则
//需要在实际的寄存器中减2,此操作对应三角波的
//下降沿
if(GPR3==0x5FFE) flag1=0x01; //若需要转换的数据到FFFH,则开始下降沿
if(GPR3==0x4000) flag1=0x00; //若需要转换的数据到00H,则开始上升沿
SPITRANS(); //调用SPI发送数据子程序
}
}
//当发生干扰中断时,执行此中断服务程序
void interrupt nothing()
{
return;
}
说明:以上是课本上例子,但是我调试时没转换的任何值,恳请指点~~~
-
速度快点还好说,现在这个驴速,果然被驴踢了。
-
楼主理解的很正确,只是需要大侠的确认
-
ST似乎对M0比较排斥,或许因为M3的STM32比较成功,有点象当年NXP对M3不感冒一样。印象里ST曾经说过(暂时)不会进行M0的开发。
-
SetTimer(0,1000,NULL);
更改为:
SetTimer(1,1000,NULL);
试试。
-
“Driven shield 的目的是要在shield线上通过与按键电极相同的信号”
Driven shield一般覆成象接地那样大片的形状,包在按键电极和引线周围;另外,同时驱动Load、Key引脚,且Load、Key上面的RC值差不多,从而shield与按键电极信号也就类似,从而避免手没有按在按键电极上的影响。
做个16按键的触摸板,用到3个端口,就需要3根“Driven shield”线。需要分别覆3个大片的Driven shield层。
-
仿真的看看就知道了
-
不知你想找破解版还是找代替版
-
是复位信号没有起来,呵呵
-
引用 4 楼 matrix2009 的回复:
问题解决了一大部分,nero等软件可以过滤,刻录机只是被系统识别为只读光驱。
但是现在有个问题,Windows自带的刻录不能禁用,
我找到一句话“自带的可以过滤掉imapi.sys的刻录相关IOCTL码就可以了”,
我想知道和刻录相关的IOCTL码都有什么?
[/quote]
楼主你好,我尝试使用组策略的用户配置”→“管理模板”→“Windows组件”→“Windows资源管理器”然后在右边窗口中找到并启用“删除CD刻录功能”的方法设置了不能用Windows自带刻录.但楼主的nero等软件如何过滤?是3楼所说的权限改为User吗?我测试过Nero可以,但是别的软件例如Imgburn HP的Memories Disc Thshiba的Disc等可以吗?
[quote]引用 2 楼 kyzf 的回复:
给别人USER 权限的登录ID 和密码,并设置USER 不能使能这些设备,应该就可以。
请问设置User不能使用这些设备怎么设置?谢谢.
-
PAGE_PHYSICAL 终于知道这个标志什么意思,怎么用了,呵呵。
感谢rushonin ,Veabol、…………
-
对不起,不能透露,
-
楼主解决了就不管了……
-
解决了
原来我虽然在catalog中选上了蓝牙hid设备的支持,但是在ce.bib中并没有将bthhid.dll包含进去
所以导致启动设备失败。
-
深奥,帮顶了,学习
-
也不熟悉你的寄存器设置,我首先得使能Timer0中断吧.
其实VICVectAddr0 = (unsigned int)IRQ_TIMER0 中的VICVectAddr0 定义是否正确,是否是定时器0的中断地址
检查各个.h文件和startup.s文件.
-
cfanlwn:
做一个4层板大概多少钱???
-
引用 14 楼 ankye 的回复:
看你买板子的用途呀,还有技术支持等很重要!有些厂家比如QQ,BOOTLOADER源码没有!
我就是想了解一下大家都用CE来做些啥么
-
e im tkwv wkgr
-
你好,我也遇到了同样的问题,我刚开始学windows ce ,你能告诉我你是怎么解决的吗,非常感谢,我的邮箱是liuzy501@163.com