US复制这条信息,打开
获得 231 次赞
帮助过781人
rt,用的是pcf8591芯片,接图如下,调节u1电阻小灯看到小灯确实有明显的明暗变化,可就是数码管显示不出来数值 请问哪里出了错,这样写程序可靠吗,顺便再问一下,为什么写、读字节都要有scl=0,sda=1的操作? 编译时总出来c141错误,随便改了个名字没有了,这个错误到底是什么意思? #include #define uchar unsigned char #define uint unsigned int sbit sda=p2^0; sbit scl=p2^1; sbit du=p2^6; sbit we=p2^7; uchar code table; du=1; du=0; delay(5); } void main() { init(); while(1) { value=adc_read(); dac_out(value); display(value); } }
内核模块是linux内核向外部提供的一个插口,其全称为动态可加载内核模块(loadable kernel module,lkm),我们简称为模块。模块具有以下特点: 1 模块本身不被编译入内核映像,从而控制了内核的大小 2 模块一旦被加载,它就和内核中的其他部分一样 一、 什么是模块 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其他内核上层的功能。 首先编写hello.c文件 完成上述两个步骤,然后再模块所在路径运行make命令,即生成模块目标文件(hello.ko) 然后你可以运行insmod命令来加载模块,当模块加载后你可以通过lsmod查看模块是否被加载进去。rmmod命令用来卸载模块,dmesg命令可以查看模块执行的结果. 知识点: 内核符号表: 内存地址 符号名 [所属模块] 在模块编程中,可以根据符号名从这个文件中检索出其对应的地址,然后直接访问该地址从而获得内核数据。第三列“所属模块”指符号所在的模块名,对于从内核这一母模块移出的符号,这一列为空。 可通过/proc/kallsyms查看模块输出的内核符号 模块依赖 如前所述,内核符号表记录了所有模块可以访问的符号及相应的地址。当一个新的模块被装入内核后,它所申明的某些符号就会被登记到这个表中,而这些符号可能被其他模块所引用,这就引出了模块依赖这个问题。 一个模块a引用另一个模块b所移出的符号,我们就说模块b被模块a引用,或者说模块a依赖模块b。如果要链接模块a,必须先链接模块b。这种模块间相互依赖的关系就叫模块依赖。 模块引用计数器 为 了确保模块安全地卸载,每个模块都有一个引用计数器。当执行模块所涉及的操作时就递增计数器,在操作结束时就递减这个计数器;另外,当模块b被模块a引用 时,模块b的引用计数就递增,引用结束,计数器递减。什么时候可以卸载这个模块?当然只有这个计数器值为0的时候,例如,当一个文件系统还被安装在系统上 时就不能将其卸载,当这个文件系统不再被使用时,引用计数器就为0,于是可以卸载。
dds是近几年发展起来的一种新的频率合成方法, 它具有极快的频率转换速度,较高的频率分辨率以及频率转换时相位的连续性 。这些特点使其得到飞速发展和应用。但是 dds频率合成器具有杂散大和输出带宽受限的缺点。 而锁相环pll 是一窄带滤波器,它有输出相位噪声低及较宽的输出带宽。但锁相环频率转换速度慢,频率分辨率低,将 dds和锁相环结合的频率合成方法可以弥补各自的不足。作者设计和研制了一种 dds激励的锁相频率源。
--实验名称:十二进制循环计数器 --实验要求:制作十二进制循环计数器并通过一位共阴数码显示,有复位信号,使能 信号,进位信号.