中易网

c8051F340单片机问题

答案:2  悬赏:0  
解决时间 2021-11-29 14:38
#include // SFR declarations
sfr16 TMR2RL = 0xca; // Timer2 reload value
sfr16 TMR2 = 0xcc; // Timer2 counter
#define SYSCLK 12000000 / 8 // SYSCLK frequency in Hz
#define BLINK_RATE 10 // Timer2 Interrupts per second
sbit LED1 = P2^2; // LED='1' means ON
void OSCILLATOR_Init (void);
void PORT_Init (void);
void Timer2_Init (int counts);
void Timer2_ISR (void)
void main (void)
{
PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
// enable)
OSCILLATOR_Init (); // Initialize system clock
PORT_Init (); // Initialize crossbar and GPIO

Timer2_Init (SYSCLK / 12 / BLINK_RATE); // Init Timer2 to generate
// interrupts at a 10Hz rate
EA = 1; // Enable global interrupts

while (1) {} // Spin forever
}
void OSCILLATOR_Init (void)
{
OSCICN = 0x80; // Configure internal oscillator for
// its lowest frequency)
}
void PORT_Init (void)
{
XBR0 = 0x00; // No digital peripherals selected
XBR1 = 0x40; // Enable crossbar and weak pull-ups
P2MDOUT |= 0x04; // Enable LED as a push-pull output
}
void Timer2_Init (int counts)
{
TMR2CN = 0x00; // Stop Timer2; Clear TF2
// Use SYSCLK/12 as timebase
CKCON &= ~0x60; // Timer2 clocked based on T2XCLK

TMR2RL =-counts; // Init reload values,
TMR2 = 0xffff; // Set to reload immediately
ET2 = 1; // Enable Timer2 interrupts
TR2 = 1; // Start Timer2
}

void Timer2_ISR (void) interrupt 5
{
TF2H = 0; // Clear Timer2 interrupt flag

LED1 = ~LED1; // Change state of LED
}
这个是silicon labs IDE安装后的一个例子程序,功能是要实现开发板上的发光二级管在一秒内大约闪5次,小弟对
TMR2RL =-counts; // Init reload values
这行代码中-counts没看懂,counts前面的那个-是什么意思?赋计数初值不就是count吗?怎么前面还有个“-”呢?我试了下,如果counts前面有“-”的话,二极管可以在一秒内大约闪5次,如果把前面的“-”去掉的话,二极管大约1秒闪一次那样(没仔细数,总之等比原来闪频率要慢很多),求大神给小弟指点下,那个“-”是什么意思?
最佳答案
counts是有符号数,-相当于counts取反,对于cpu来说只有,0,1没有+-号。

你可以在void Timer2_Init (int counts)函数里,加一个临时变量调试一下:
unsigned int TMP=0;
TMP=-counts;

TMP=counts;

断点看看两次TMP的值是不是一样。

TMR2RL 为无符号整数,只认0,1,不认正负。
全部回答
该方式是int形的。打比方00000001是1,负的它是共有:4096 + 256 = 4352 字节。 只有 0~0xff,这 256 字节是《片内ram》。 另外的 4096 字节,要按照《片外ram》的读写方法来处理。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一直声的意思是什么?一直声的释义是什么啊?
帮忙用■D魅·xx起个名字
屯农的意思是什么啊?请解释下!
屋顶排水组织设计的要求
童第周的意思是什么?童第周的释义是什么啊?
天天酷跑酷跑贵族2什么角色折扣
大亨牛奶(永亨商行(民生分店)地址有知道的么
郑州上街这块哪有招聘的,什么都行
进帆的意思是什么啊?请解释下!
文章宋佳聊时尚是什么电视剧,,
窮光蛋的意思是什么?窮光蛋的释义是什么啊?
标牌面板价格如何
《梅雨潭》节选自谁的《》,主要作品有《》《
郴州火车站到耒阳汽车站怎么走。
疲劳工作后洗冷水澡会不会让人更累
推荐资讯
渊渟的意思是什么?渊渟的释义是什么啊?
怀孕七个月家里想从新装修一个酒柜对宝宝有影
求告知装修一间房子要多少钱
杭州各家公司一般都喝哪些牌子的桶装水?
白色烤漆门好不好?
菏泽市中山路蛋糕店有那些
隔离开关的维护方法哪位清楚?
深圳到成都80斤的衣服要怎么邮寄
牛初乳片哪个牌子好?
高压绝缘防水胶带售价是多少?
二胎准生证办理的一般程序是怎样的?
怀孕后为什么总是腰疼
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?