‘壹’ 128单片机实现端口B(PORTB)流水灯控制输出。要求流水方向向左循环闪烁3次,再向右循环闪烁3次。并循环。
//你的程序完全不对
//延时程序,要延时多长时间你可以自己改
voiddelay(void)
{
unsignedintt=0;
while(t<10000){
t++;
}
}
//主程序
voidmain(void)
{
unsignedchari;
unsignedcharj;
DDRD=0xFF; //定义PORTD端口为输出口
//主循环,对应你所说的“并循环”
while(1){
//向左循环3次
for(i=0;i<3;i++){
//亮灯左移,一共4盏灯
for(j=0;j<4;i++){
PORTD=~(1<<j); //点亮第j盏灯,引脚输出低电平亮灯(从你原来的程序看出来的)
delay(); //延时,就是第j盏灯要亮多长时间,可以自己修改delay的时间就可以了
}
}
//向右循环3次
for(i=0;i<3;i++){
//亮灯右移,一共4盏灯
for(j=0;j<4;i++){
PORTD=~(0x80>>j); //点亮第j盏灯,引脚输出低电平亮灯(从你原来的程序看出来的)
delay(); //延时,就是第j盏灯要亮多长时间,可以自己修改delay的时间就可以了
}
}
}
}
‘贰’ avr128单片机
ATMEGA128L 工作电压范围2.7V-5.5V 工作频率0-8M
ATMEGA128 工作电压范围4.5V-5.5V 工作频率0-16M
128L虽然最高频率为8M 但是可以超频工作,如果频率在12M以内,电压为4.5-5.5V之间基本上可以通用,你说的12M换成11.0592具体看你产品对时间的要求高不高,自己做实验就无所谓了。
‘叁’ 8051单片机内部RAM低128单元划分为哪三个部分各有什么特点
0x00~0x1f 4组通用工作寄存器0x20~0x2f 128位的位寻址0x30~0x7f 用户RAM区
(1)工作寄存器组(00H——1FH)
这是一个用寄存器直接寻址的区域,内部数据RAM区的0—31,共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0——R7。
(2)可位寻址RAM区(20H——2FH)
16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址。主要用于位寻址。
(3)通用的RAM区(30H——7FH)
用于设置堆栈、存储数据。
(3)128单片机扩展阅读:
PC 机的CPU 是基于冯诺伊曼的体系结构,然而MCU(单片机)、Dsp(数字信号处理器)都是基于哈佛结构的体系结构。哈佛结构与冯诺伊曼结构有很大的不同,在冯诺伊曼体系结构下只有一个地址空间,ROM 和RAM 可以随意安排在这一地址范围内的不同空间,即ROM 和RAM 地址统一分配。
CPU 访问存储器时,一个地址对应唯一的存储单元,可能是ROM,也可能是RAM。而哈佛结构下ROM 和RAM 是分开编址,即程序和数据分开保存,访问时用不同的指令加以区分,并可同时访问,在这样的体系结构下有利于提高指令的执行速度。在后面的章节我们将详细介绍单片机的存储器配置。
‘肆’ xs128单片机是什么内核的……
XS128是摩托罗拉基于68系列处理器的16位单片机,STM32是ARM结构cortex-m构架的32位单片机,两个的差别当然大了。
‘伍’ XS128单片机中ECT模块和TIM模块的区别
xs128没有ECT模块,而是分成了PIT和TIM两个模块。PIT的作用是产生周期中断,与51单片机的定时器功能一样,只是不需像51那样在中断中要重赋定时器初值。计数是在TIM中实现,xs128只有16位一个脉冲累加器PACA(与IOC7脚相连),而dg128还有PACB,比如你用光电编码器测速,编码器传回一系列脉冲,由PACA记录脉冲数,有一个脉冲就记一个数(这与你设定的触发沿有关)。另外,每个引脚都有一个对应的TCx寄存器,当相应引脚触发时,TIM模块中的自由计数器TCNT中的计数值就存到对应的TCx中(读回TCx),再触发一次TCNT再存入TCx(再读回),两次相减就为两次触发的间隔时间。
‘陆’ 有关128单片机的一些问题
//1.这里其实应该是根据i遍历fdread的,比如conns[i],而不是client_conn.
//1.可以用vector来存储SOCKET.有时间的童鞋自己写吧.
//1.Nonzero if s is a member of the set. Otherwise, zero.
if (FD_ISSET(client_conn, &fdread))
{
cout << "get fdread" << endl;
int readed = 0;
readed = recv(client_conn,buffer,kLen,0);
if(readed == SOCKET_ERROR)
{
int code = WSAGetLastError();
cout << "code: " << code << endl;
//1.socket已经断开
closesocket(client_conn);
goto NewConn;
‘柒’ 怎么算128单片机的波特率
算的方法。在数据手册中有:BaudRate=BusClock/(16*SCIBD) 8*10^6/(16*52)=8000000/832=9615.4。所以实际上波特率不是准确的9600.为什么要选择52做为计算数。你可以反着除一下:SCIBD=BusClock/BaudRate/16=52.083333...
‘捌’ 128单片机5V电源怎么转换成3.3V输出
最简单的是串两个二极管,这样能得到3.5V左右的电压,当然最好的就是用AMS1117-3.3,把5V转换为准确的3.3V输出。
‘玖’ xs128和stm32两种单片机分别有哪些优势用起来有什么区别
stm32比128高级,我两块板都写过程序,更精通于32,个人也更偏向于32。
这么说吧,128能实现的的32也能,128不能实现的的32也能。而且128写程序的编译器还没有写32的keil高级,调试的时候麻烦。
‘拾’ 128单片机程序超过c000-ffff区域怎么办
程序过大,超出单片机正常寻址范围的时候,可以考虑扩展ROM。
1、将数据、表格等放到扩展的ROM中,通过一定方式可以读取。
2、可以采取一定方法,比如KEIL的START.UP中有定义,扩展ROM,分成几个bank来处理。